Skip to content
  1. Aug 17, 2018
    • Zachary Turner's avatar
      [MS Demangler] Demangle all remaining types of operators. · 469f0763
      Zachary Turner authored
      This demangles all remaining special operators including thunks,
      RTTI Descriptors, and local static guard variables.
      
      llvm-svn: 340083
      469f0763
    • Krzysztof Parzyszek's avatar
      [Hexagon] Remove unused functions from HexagonInstPrinter, NFC · 9937e205
      Krzysztof Parzyszek authored
      llvm-svn: 340081
      9937e205
    • Michael Kruse's avatar
      [AST] Adapt Polly to AnalysisSetTracker changes. NFC. · b67e5d3f
      Michael Kruse authored
      The method AliasSetTracker::getAliasSetForPointer was removed and replaced by AliasSetTracker::getAliasSetFor for the restructuring in r339930. 
      
      Since Polly uses AliasSetTracker::getAliasSetForPointer, a temporary fix has been committed in r339937 with a comment:
      
           Can someone from polly please migrate usage and then delete the wrapper?
      
      This commit is doing exactly that.
      
      llvm-svn: 340072
      b67e5d3f
    • Jordan Rupprecht's avatar
      Fix windows buildbots by removing : from filenames · bb179a19
      Jordan Rupprecht authored
      llvm-svn: 340071
      bb179a19
    • Jordan Rupprecht's avatar
      [llvm-objcopy] Add support for -I binary -B <arch>. · cf67633e
      Jordan Rupprecht authored
      Summary:
      The -I (--input-target) and -B (--binary-architecture) flags exist but are currently silently ignored. This adds support for -I binary for architectures i386, x86-64 (and alias i386:x86-64), arm, aarch64, sparc, and ppc (powerpc:common64). This is largely based on D41687.
      
      This is done by implementing an additional subclass of Reader, BinaryReader, which works by interpreting the input file as contents for .data field, sets up a synthetic header, and adds additional sections/symbols (e.g. _binary__tmp_data_txt_start).
      
      Reviewers: jakehehrlich, alexshap, jhenderson, javed.absar
      
      Reviewed By: jhenderson
      
      Subscribers: jyknight, nemanjai, kbarton, fedor.sergeev, jrtc27, kristof.beyls, paulsemel, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D50343
      
      llvm-svn: 340070
      cf67633e
    • Jun Lim's avatar
      Test commit · da5864c7
      Jun Lim authored
      I just removed a blank space.
      
      llvm-svn: 340069
      da5864c7
    • Vedant Kumar's avatar
      Remove a hardcoded address in test/DebugInfo/X86/vla-multi.ll · 8cd64580
      Vedant Kumar authored
      This relaxes a test to make it less brittle.
      
      llvm-svn: 340068
      8cd64580
    • Alina Sbirlea's avatar
      [IDF] Make GD const. · b8ff3fff
      Alina Sbirlea authored
      llvm-svn: 340067
      b8ff3fff
    • Matt Davis's avatar
      [llvm-mca] Reformat a few lines (fix spacing). NFC. · 06ac6af2
      Matt Davis authored
      llvm-svn: 340065
      06ac6af2
    • Reka Kovacs's avatar
      [Support] NFC: Fix docstring in FileSystem.h. · 5bce7f8b
      Reka Kovacs authored
      llvm-svn: 340063
      5bce7f8b
    • Simon Pilgrim's avatar
      [X86][SSE] Lower constant vXi8 ISD::SRL/ISD::SRA using PMULLW · 2f48122c
      Simon Pilgrim authored
      Extending the concept introduced in D49562, this patch lowers constant vXi8 ISD::SRL/ISD::SRA by zero/sign extending to vXi16 and using PMULLW and then truncating the high 8 bits of the result.
      
      Differential Revision: https://reviews.llvm.org/D50781
      
      llvm-svn: 340062
      2f48122c
    • Evandro Menezes's avatar
      [InstCombine] Refactor the simplification of pow() (NFC) · 4b39010a
      Evandro Menezes authored
      Refactor all cases dealing with `exp{,2,10}()` into one function in
      preparation for D49273.  Otherwise, NFC.
      
      llvm-svn: 340061
      4b39010a
    • Evandro Menezes's avatar
      [NFC] Expand test cases for simplifying pow() · e219d384
      Evandro Menezes authored
      In prepatration for the improvements that D49273 enables.
      
      llvm-svn: 340060
      e219d384
    • Craig Topper's avatar
      [X86] Use hasOneUse instead of isOnlyUserOf. NFCI · 730890db
      Craig Topper authored
      isOnlyUserOf is a little heavier because it allows the node to be used multiple times by the other node. In this case we are looking at a truncate which only has one operand so we know it can only use it once. Thus hasOneUse is better.
      
      llvm-svn: 340059
      730890db
    • Simon Pilgrim's avatar
      [TableGen] Don't separately search for DefaultMode when we're going to iterate... · 2784a339
      Simon Pilgrim authored
      [TableGen] Don't separately search for DefaultMode when we're going to iterate the set anyway. NFCI.
      
      llvm-svn: 340055
      2784a339
    • Alina Sbirlea's avatar
      [IDF] Teach Iterated Dominance Frontier to use a snapshot CFG based on a GraphDiff. · 0dfe8303
      Alina Sbirlea authored
      Summary:
      Create the ability to compute IDF using a CFG View.
      For this, we'll need a new DT created using a list of Updates (to be refactored later to a GraphDiff), and the GraphTraits based on the same GraphDiff.
      
      Reviewers: kuhar, george.burgess.iv, mzolotukhin
      
      Subscribers: sanjoy, jlebar, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D50675
      
      llvm-svn: 340052
      0dfe8303
    • Teresa Johnson's avatar
      [ThinLTO] Add option for printing import failure reasons · cb9a82fc
      Teresa Johnson authored
      Summary:
      Adds the option for the printing of summary information about functions
      considered but rejected for importing during the thin link.
      
      Reviewers: davidxl
      
      Subscribers: mehdi_amini, inglorion, eraman, steven_wu, dexonsmith, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D50881
      
      llvm-svn: 340047
      cb9a82fc
    • Zachary Turner's avatar
      [MS Demangler] Rework the way operators are demangled. · 3461bfaa
      Zachary Turner authored
      Previously, some of the code for actually parsing mangled
      operator names was more like formatting code in nature,
      and was interspersed with the demangling code which builds
      the AST.  This means that by the time we got to the printing
      code, we had lost all information about what type of operator
      we had, and all we were left with was a string that we just
      had to print.  However, not all operators are actually even
      operators.  it's basically just a catch-all mangling for
      "special names", and for some of the other types it helps
      to know when we're actually doing the printing what it is.
      
      This patch changes the way things work by introducing an
      OperatorInfo structure and corresponding enumeration.  When
      we demangle we store the enumeration value and demangled
      components separately.  This gives more flexibility during
      printing.
      
      In doing so, some demanglings of special names which we didn't
      previously support come out of this for free, so we now demangle
      those.
      
      A few are more complex and are better left for a followup patch
      though.
      
      An exhaustive test of every possible operator code is included,
      with the ones that don't yet work commented out.
      
      llvm-svn: 340046
      3461bfaa
    • Simon Pilgrim's avatar
      [TableGen] TypeInfer - Cache the legal types as TypeSetByHwMode · 45e61c5f
      Simon Pilgrim authored
      We were just caching the MVT set of legal types, then every call creating a new TypeSetByHwMode with it and passing it back on the stack. There's no need to do this - we can create and cache the whole TypeSetByHwMode once and return a const reference to it each time.
      
      Additionally, TypeInfer::expandOverloads wasn't making use of the fact that the cache just contains a default mode containing all the types.
      
      Saves up to 30secs in debug builds of x86 -gen-dag-isel.
      
      Differential Revision: https://reviews.llvm.org/D50903
      
      llvm-svn: 340042
      45e61c5f
    • Hsiangkai Wang's avatar
      [DebugInfo] Generate DWARF debug information for labels. (Fix leak problems) · 2532ac88
      Hsiangkai Wang authored
      There are two forms for label debug information in DWARF format.
      
      1. Labels in a non-inlined function:
      
      DW_TAG_label
        DW_AT_name
        DW_AT_decl_file
        DW_AT_decl_line
        DW_AT_low_pc
      
      2. Labels in an inlined function:
      
      DW_TAG_label
        DW_AT_abstract_origin
        DW_AT_low_pc
      
      We will collect label information from DBG_LABEL. Before every DBG_LABEL,
      we will generate a temporary symbol to denote the location of the label.
      The symbol could be used to get DW_AT_low_pc afterwards. So, we create a
      mapping between 'inlined label' and DBG_LABEL MachineInstr in DebugHandlerBase.
      The DBG_LABEL in the mapping is used to query the symbol before it.
      
      The AbstractLabels in DwarfCompileUnit is used to process labels in inlined
      functions.
      
      We also keep a mapping between scope and labels in DwarfFile to help to
      generate correct tree structure of DIEs.
      
      It also generates label debug information under global isel.
      
      Differential Revision: https://reviews.llvm.org/D45556
      
      llvm-svn: 340039
      2532ac88
    • Stefan Pintilie's avatar
      [PowerPC] Generate lxsd instead of the ld->mtvsrd sequence for vector loads · 39869ccf
      Stefan Pintilie authored
      This patch addresses:
      
      - Implementation within PPCISelLowering.cpp to check if we should use direct
      load into vector instructions (such as lxsd/lfd ) when the scalar_to_vector
      function is used; which will allow us to catch as many cases of the
      scalar_to_vector uses as possible to translate the ld->mtvsrd sequence into
      lxsd.
      
      - Test cases to exhibit the behaviour of emitting lxsd/lfd.
      
      Patch by amyk
      
      Differential revision: https://reviews.llvm.org/D49698
      
      llvm-svn: 340037
      39869ccf
    • Andrea Di Biagio's avatar
      [llvm-mca] Removed references to HWStallEvent in Scheduler.h. NFCI · 163419f9
      Andrea Di Biagio authored
      class Scheduler should not know anything of hardware event listeners and
      hardware stall events (HWStallEvent).  HWStallEvent objects should only be
      constructed by pipeline stages to notify listeners of hardware events.
      
      No functional change intended.
      
      llvm-svn: 340036
      163419f9
    • Francis Visoiu Mistrih's avatar
      [x86] Fix test breaking on Darwin after r339962 · f006b491
      Francis Visoiu Mistrih authored
      * -march=x86-64 -> -mtriple=x86_64-unknown-linux to avoid _ prefixes to
      symbols
      * add -start-before to avoid running the whole codegen on the IR. I
      assumed it is meant to be running after X86SpeculativeLoadHardening.
      
      llvm-svn: 340034
      f006b491
    • Francis Visoiu Mistrih's avatar
      [X86] Fix liveness information when expanding X86::EH_SjLj_LongJmp64 · 8bff8325
      Francis Visoiu Mistrih authored
      test/CodeGen/X86/shadow-stack.ll has the following machine verifier
      errors:
      
      ```
      *** Bad machine code: Using a killed virtual register ***
      - function:    bar
      - basic block: %bb.6 entry (0x7fdc81857818)
      - instruction: %3:gr64 = MOV64rm killed %2:gr64, 1, $noreg, 8, $noreg
      - operand 1:   killed %2:gr64
      
      *** Bad machine code: Using a killed virtual register ***
      - function:    bar
      - basic block: %bb.6 entry (0x7fdc81857818)
      - instruction: $rsp = MOV64rm killed %2:gr64, 1, $noreg, 16, $noreg
      - operand 1:   killed %2:gr64
      
      *** Bad machine code: Virtual register killed in block, but needed live out. ***
      - function:    bar
      - basic block: %bb.2 entry (0x7fdc818574f8)
      Virtual register %2 is used after the block.
      ```
      
      The fix here is to only copy the machine operand's register without the
      kill flags for all the instructions except the very last one of the
      sequence.
      
      I had to insert dummy PHIs in the test case to force the NoPHI function
      property to be set to false. More on this here: https://llvm.org/PR38439
      
      Differential Revision: https://reviews.llvm.org/D50260
      
      llvm-svn: 340033
      8bff8325
    • Florian Hahn's avatar
      [NewGVN] Add tests for r340031. · 9e50e915
      Florian Hahn authored
      llvm-svn: 340032
      9e50e915
    • Florian Hahn's avatar
      [InstrSimplify,NewGVN] Add option to ignore additional instr info when simplifying. · 19f9e32f
      Florian Hahn authored
      NewGVN uses InstructionSimplify for simplifications of leaders of
      congruence classes. It is not guaranteed that the metadata or other
      flags/keywords (like nsw or exact) of the leader is available for all members
      in a congruence class, so we cannot use it for simplification.
      
      This patch adds a InstrInfoQuery struct with a boolean field
      UseInstrInfo (which defaults to true to keep the current behavior as
      default) and a set of helper methods to get metadata/keywords for a
      given instruction, if UseInstrInfo is true. The whole thing might need a
      better name, to avoid confusion with TargetInstrInfo but I am not sure
      what a better name would be.
      
      The current patch threads through InstrInfoQuery to the required
      places, which is messier then it would need to be, if
      InstructionSimplify and ValueTracking would share the same Query struct.
      
      The reason I added it as a separate struct is that it can be shared
      between InstructionSimplify and ValueTracking's query objects. Also,
      some places do not need a full query object, just the InstrInfoQuery.
      
      It also updates some interfaces that do not take a Query object, but a
      set of optional parameters to take an additional boolean UseInstrInfo.
      
      See https://bugs.llvm.org/show_bug.cgi?id=37540.
      
      Reviewers: dberlin, davide, efriedma, sebpop, hiraditya
      
      Reviewed By: hiraditya
      
      Differential Revision: https://reviews.llvm.org/D47143
      
      llvm-svn: 340031
      19f9e32f
    • Krzysztof Parzyszek's avatar
      [Hexagon] Expand vgather pseudos during packetization · 39a979c8
      Krzysztof Parzyszek authored
      This will allow packetizing the vgather expansion with other instructions.
      
      llvm-svn: 340028
      39a979c8
    • Alex Bradbury's avatar
      [AtomicExpandPass] Widen partword atomicrmw or/xor/and before tryExpandAtomicRMW · 3291f9aa
      Alex Bradbury authored
      This patch performs a widening transformation of bitwise atomicrmw 
      {or,xor,and} and applies it prior to tryExpandAtomicRMW. This operates 
      similarly to convertCmpXchgToIntegerType. For these operations, the i8/i16 
      atomicrmw can be implemented in terms of the 32-bit atomicrmw by appropriately 
      manipulating the operands. There is no functional change for the handling of 
      partword or/xor, but the transformation for partword 'and' is new.
      
      The advantage of performing this transformation early is that the same 
      code-path can be used regardless of the approach used to expand the atomicrmw 
      (AtomicExpansionKind). i.e. the same logic is used for 
      AtomicExpansionKind::CmpXchg and can also be used by the intrinsic-based 
      expansion in D47882.
      
      Differential Revision: https://reviews.llvm.org/D48129
      
      llvm-svn: 340027
      3291f9aa
    • Anna Thomas's avatar
      [LICM] Add a diagnostic analysis for identifying alias information · 1962621a
      Anna Thomas authored
      Summary:
      Currently, in LICM, we use the alias set tracker to identify if the
      instruction (we're interested in hoisting) aliases with instruction that
      modifies that memory location.
      
      This patch adds an LICM alias analysis diagnostic tool that checks the
      mod ref info of the instruction we are interested in hoisting/sinking,
      with every instruction in the loop.  Because of O(N^2) complexity this
      is now only a diagnostic tool to show the limitation we have with the
      alias set tracker and is OFF by default.
      
      Test cases show the difference with the diagnostic analysis tool, where
      we're able to hoist out loads and readonly + argmemonly calls from the
      loop, where the alias set tracker analysis is not able to hoist these
      instructions out.
      
      Reviewers: reames, mkazantsev, fedor.sergeev, hfinkel
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D50854
      
      llvm-svn: 340026
      1962621a
    • Roger Ferrer Ibanez's avatar
      [RISCV] Remove unused function · 734a04ea
      Roger Ferrer Ibanez authored
      This function is not virtual, it is private and it is not called anywhere. No
      regression is introduced by removing it.
      
      I think we can safely remove it.
      
      Differential Revision: https://reviews.llvm.org/D50836
      
      llvm-svn: 340024
      734a04ea
    • Sanjay Patel's avatar
      [ConstantFolding] add simplifications for funnel shift intrinsics · 411b8608
      Sanjay Patel authored
      This is another step towards being able to canonicalize to the funnel shift 
      intrinsics in IR (see D49242 for the initial patch). 
      We should not have any loss of simplification power in IR between these and 
      the equivalent IR constructs.
      
      Differential Revision: https://reviews.llvm.org/D50848
      
      llvm-svn: 340022
      411b8608
    • Simon Pilgrim's avatar
      [TableGen] TypeSetByHwMode::insert - cache the default MVT. NFCI. · 16a2f54e
      Simon Pilgrim authored
      Avoids repeated count()/find() calls that we've already have the default values for.
      
      llvm-svn: 340020
      16a2f54e
    • Luke Cheeseman's avatar
      [AArch64] - Generate pointer authentication instructions · 64dcdec6
      Luke Cheeseman authored
      - Generate pointer authentication instructions
      - The functions instrumented depend on function attribtues:
        all (all functions instrumentent)
        non-leaf (only those that spill LR)
        none
      - Function epilogues sign the LR before spilling to the stack and authenticate
        the LR once restored
      - If the target is v8.3a or greater than can use the combined authenticate and
        return instruction
      
      Differential revision: https://reviews.llvm.org/D49793
      
      llvm-svn: 340018
      64dcdec6
    • Nemanja Ivanovic's avatar
      Revert extraneous directory added by accident in rL340016 · 7d272513
      Nemanja Ivanovic authored
      It appears that the way this patch was produced ended up creating an
      extra 'llvm' directory where the test was placed. When I committed the
      patch, that directory ended up being created upstream. This commit should
      revert that.
      Sorry for the noise.
      
      llvm-svn: 340017
      7d272513
    • Nemanja Ivanovic's avatar
      [PowerPC] Generate Power9 extswsli extend sign and shift immediate instruction · 39751276
      Nemanja Ivanovic authored
      Add a DAG combine for the PowerPC code generator to generate the Power9 extswsli
      extend sign and shift immediate instruction.
      
      Patch by RolandF.
      
      Differential revision: https://reviews.llvm.org/D49879
      
      llvm-svn: 340016
      39751276
    • Simon Pilgrim's avatar
      [DAGCombiner] extractShiftForRotate - fix out of range shift issue · 03e57521
      Simon Pilgrim authored
      Don't just check for negative shift amounts.
      
      Fixes OSS Fuzz #9935
      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9935
      
      llvm-svn: 340015
      03e57521
    • Andrea Di Biagio's avatar
      [InstCombine] Remove unused method FAddCombine::createFDiv(). NFC · f874607f
      Andrea Di Biagio authored
      This commit fixes a (gcc 7.3.0) [-Wunused-function] warning caused by the
      presence of unused method FaddCombine::createFDiv().
      The last use of that method was removed at r339519.
      
      llvm-svn: 340014
      f874607f
    • Bernard Ogden's avatar
      [ARM/AArch64] Support FP16 +fp16fml instructions · b828bb2a
      Bernard Ogden authored
      Add +fp16fml feature for new FP16 instructions, which are a
      mandatory part of FP16 from v8.4-A and an optional part of FP16
      from v8.2-A. It doesn't seem to be possible to model this in
      LLVM, but the relationship between the options is handled by
      the related clang patch.
      
      In keeping with what I think is the usual practice, the fp16fml
      extension is accepted regardless of base architecture version.
      
      Builds on/replaces Sjoerd Meijer's patch to add these instructions at
      https://reviews.llvm.org/D49839.
      
      Differential Revision: https://reviews.llvm.org/D50228
      
      llvm-svn: 340013
      b828bb2a
    • Bernard Ogden's avatar
      [ARM/AArch64] TargetParserTest fixes · 6cb07d2b
      Bernard Ogden authored
      Adds some missing tests for the FP16 extension,
      fixes an existing test that misnames it.
      
      Differential Revision: https://reviews.llvm.org/D50227
      
      llvm-svn: 340012
      6cb07d2b
    • Simon Pilgrim's avatar
      [DAGCombine] Improve (sra (sra x, c1), c2) -> (sra x, (add c1, c2)) folding · 5113b487
      Simon Pilgrim authored
      Add support for cases where only some c1+c2 results exceed the max bitshift, clamping accordingly.
      
      Differential Revision: https://reviews.llvm.org/D35722
      
      llvm-svn: 340010
      5113b487
Loading