Skip to content
  1. Jun 13, 2015
  2. Jun 12, 2015
    • Lang Hames's avatar
      [Orc] Fix a bug in the CompileOnDemand layer where stub decls were not cloned · 2e36ddf6
      Lang Hames authored
      into partitions. Also, add an option to clone stub definitions (not just decls)
      into partitions: these definitions could be inlined in some places to avoid the
      overhead of calling via the stub.
      
      Found by inspection - no test case yet, although I plan to add a unit test for
      this once the CompileOnDemand layer refactoring settles down.
      
      llvm-svn: 239640
      2e36ddf6
    • Tom Stellard's avatar
      R600/SI: Add assembler support for FLAT instructions · 12a1910e
      Tom Stellard authored
      - Add glc, slc, and tfe operands to flat instructions
      - Add missing flat instructions
      - Fix the encoding of flat_load_dwordx3 and flat_store_dwordx3.
      
      llvm-svn: 239637
      12a1910e
    • Yaron Keren's avatar
      Rangify several for loops in ValueEnumerator constructor. · 4c20debe
      Yaron Keren authored
      llvm-svn: 239636
      4c20debe
    • Colin LeMahieu's avatar
      [Hexagon] Making intrinsic tests agnostic to register allocation. Narrowing... · 79ec0652
      Colin LeMahieu authored
      [Hexagon] Making intrinsic tests agnostic to register allocation.  Narrowing intrinsic parameters to appropriate width.
      
      llvm-svn: 239634
      79ec0652
    • Douglas Katzman's avatar
      Wrap some long lines in LLVMBuild files. NFC · 8f01f1cf
      Douglas Katzman authored
      As suggested by jroelofs in a prior review (D9752),
      it makes sense to generally prefer multi-line format.
      
      llvm-svn: 239632
      8f01f1cf
    • Douglas Katzman's avatar
      Add 'shave' processor name to Triple · 1b5767f7
      Douglas Katzman authored
      Based on ArchType, Clang's driver can select a non-Clang compiler.
      String parsing in Clang would have sufficed if it were only that,
      however this change anticipates true llvm support.
      
      Differential Revision: http://reviews.llvm.org/D10413
      
      llvm-svn: 239631
      1b5767f7
    • David Blaikie's avatar
      Refix a use of explicit pointer types in GEP constant folding · 473b943e
      David Blaikie authored
      In the glorious future of opaque pointer types, it won't be possible to
      retrieve the pointee type of a pointer type which is what's being done
      in this GEP loop - but the first iteration is always a pointer type and
      the loop doesn't care about that case, except whether or not the index
      is a constant.
      
      So pull that special case out before the loop and start at the second
      iteration (index 1) instead.
      
      Originally committed in r236670 and reverted with a test case in
      r239015. This change keeps the test case working while also avoiding
      depending on pointee types.
      
      llvm-svn: 239629
      473b943e
    • Matt Wala's avatar
      Fix a typo in a comment in MemCpyOpt (test commit) · a4afccd8
      Matt Wala authored
      llvm-svn: 239628
      a4afccd8
    • Yaron Keren's avatar
      Rangify two for loops in BitcodeReader.cpp. · ef5e7add
      Yaron Keren authored
      llvm-svn: 239627
      ef5e7add
    • Pete Cooper's avatar
      Remove unnecessary MCExpr.h include from MCSymbol.h · 83a930c8
      Pete Cooper authored
      MCSymbol.h already forwards declares MCExpr and only uses MCExpr* so doesn't
      need to include the header.
      
      llvm-svn: 239626
      83a930c8
    • Pete Cooper's avatar
      255d117d
    • Pete Cooper's avatar
      Move OperandList to be allocated prior to User for hung off subclasses. · b676b01b
      Pete Cooper authored
      For hung off uses, we need a Use* to tell use where the operands are.
      This was User::OperandList but we want to remove that to save space
      of all subclasses which aren't making use of 'hung off uses'.
      
      Hung off uses now allocate their own 'OperandList' Use* in the
      User::new which they call.
      
      getOperandList() now uses the hung off uses bit to work out where the
      Use* for the OperandList lives.  If a User has hung off uses, then this
      bit tells them to go back a single Use* from the User* and use that
      value as the OperandList.
      
      If a User has no hung off uses, then we get the first operand by
      subtracting (NumOperands * sizeof(Use)) from the User this pointer.
      
      This saves a pointer from User and all subclasses.  Given the average
      size of a subclass of User is 112 or 128 bytes, this saves around 7% of space
      With malloc tending to align to 16-bytes the real saving is typically more like 3.5%.
      
      On 'opt -O2 verify-uselistorder.lto.bc', peak memory usage prior to this change
      is 149MB and after is 143MB so the savings are around 2.5% of peak.
      
      Looking at some passes which allocate many Instructions and Values, parseIR drops
      from 54.25MB to 52.21MB while the Inliner calls to Instruction::clone() drops
      from 28.20MB to 27.05MB.
      
      Reviewed by Duncan Exon Smith.
      
      llvm-svn: 239623
      b676b01b
    • Pete Cooper's avatar
      Added a version of User::new for hung off uses. · c91fda3b
      Pete Cooper authored
      There are now 2 versions of User::new.  The first takes a size_t and is the current
      implementation for subclasses which need 0 or more Use's allocated for their operands.
      
      The new version takes no extra arguments to say that this subclass needs 'hung off uses'.
      The HungOffUses bool is now set in this version of User::new and we can assert in
      allocHungOffUses that we are allowed to have hung off uses.
      This ensures we call the correct version of User::new for subclasses which need hung off uses.
      
      A future commit will then allocate space for a single Use* which will be used
      in place of User::OperandList once that field has been removed.
      
      Reviewed by Duncan Exon Smith.
      
      llvm-svn: 239622
      c91fda3b
    • Pete Cooper's avatar
      Rename NumOperands to make it clear its managed by the User. NFC. · b4eede2c
      Pete Cooper authored
      This is to try make it very clear that subclasses shouldn't be changing
      the value directly.  Now that OperandList for normal instructions is computed
      using the NumOperands, its critical that the NumOperands is accurate or we
      could compute the wrong offset to the first operand.
      
      I looked over all places which update NumOperands and they are all safe.
      Hung off use User's don't use NumOperands to compute the OperandList so they
      are safe to continue to manipulate it.  The only other User which changed it
      was GlobalVariable which has an optional init list but always allocated space
      for a single Use.  It was correctly setting NumOperands to 1 before setting an
      initializer, and setting it to 0 after clearing the init list, so the order was safe.
      
      Added some comments to that code to make sure that this isn't changed in future
      without being aware of this constraint.
      
      Reviewed by Duncan Exon Smith.
      
      llvm-svn: 239621
      b4eede2c
    • Pete Cooper's avatar
      Replace all accesses to User::OperandList with getter and setter methods. NFC. · 74510a40
      Pete Cooper authored
      We don't want anyone to access OperandList directly as its going to be removed
      and computed instead.  This uses getter's and setter's instead in which we
      can later change the underlying implementation of OperandList.
      
      Reviewed by Duncan Exon Smith.
      
      llvm-svn: 239620
      74510a40
    • Rafael Espindola's avatar
      Have the ELF symbol predicates match more directly the spec. · c74ac023
      Rafael Espindola authored
      The underlaying issues is that this code can't really know if an OS specific or
      processor specific section number should return true or false.
      
      One option would be to assert or return an error, but that looks like over
      engineering since extensions are not that common.
      
      It seems better to have these be direct implementation of the ELF spec so that
      they are natural for someone familiar with ELF reading the code.
      
      Code that does have to handle OS/Architecture specific values can do it at
      a higher level.
      
      llvm-svn: 239618
      c74ac023
    • Pete Cooper's avatar
      Don't create instructions from ConstantExpr's in CFLAliasAnalysis. · 3664253c
      Pete Cooper authored
      The CFLAA code currently calls ConstantExpr::getAsInstruction which creates an instruction from a constant expr.
      
      We then pass that instruction to the InstVisitor to analyze it.
      
      Its not necessary to create these instructions as we can just cast from Constant to Operator in the visitor.  This is how other InstVisitor’s such as SelectionDAGBuilder handle ConstantExpr.
      
      llvm-svn: 239616
      3664253c
    • Greg Bedwell's avatar
      In MSVC builds embed a VERSIONINFO resource in our exe and DLL files. · 95213c31
      Greg Bedwell authored
      This reinstates my commits r238740/r238741 which I reverted due to a failure
      in the clang-cl selfhost tests on Windows.  I've now fixed the issue in
      clang-cl that caused the failure so hopefully all should be well now.
      
      llvm-svn: 239612
      95213c31
    • Rafael Espindola's avatar
      Remove a hack that tries to align '*'. · 0b9319ed
      Rafael Espindola authored
      The alignment is not required, so we can just remove it for now.
      
      The old code is a hack as it depends on the buffer management to find
      the current column.
      
      If the alignment is really desirable, the proper way to do it is
      to pass in a formatted_raw_stream that knows the current column.
      
      llvm-svn: 239603
      0b9319ed
    • Rafael Espindola's avatar
      Don't depend on the interleaving of stdout and stderr. · de28b737
      Rafael Espindola authored
      That can change as we change the buffering.
      
      llvm-svn: 239602
      de28b737
    • Alexander Potapenko's avatar
      f90556ef
    • John Brawn's avatar
      [ARM] Disabling vfp4 should disable fp16 · d9e39d53
      John Brawn authored
      ARMTargetParser::getFPUFeatures should disable fp16 whenever it
      disables vfp4, as otherwise something like -mcpu=cortex-a7 -mfpu=none
      leaves us with fp16 enabled (though the only effect that will have is
      a wrong build attribute).
      
      Differential Revision: http://reviews.llvm.org/D10397
      
      llvm-svn: 239599
      d9e39d53
    • Yaron Keren's avatar
      Replace duplicated iplist<T> types with the corresponding typedefs. · b5a87b25
      Yaron Keren authored
      llvm-svn: 239598
      b5a87b25
    • Yaron Keren's avatar
      Rangify for loops, NFC. · 26ceb084
      Yaron Keren authored
      llvm-svn: 239596
      26ceb084
    • Peter Collingbourne's avatar
      LowerBitSets: Give names to aliases of unnamed bitset element objects. · 005354b1
      Peter Collingbourne authored
      It is valid for globals to be unnamed, but aliases must have a name. To avoid
      creating invalid IR, we need to assign names to any aliases we create that
      point to unnamed objects that have been moved into combined globals.
      
      llvm-svn: 239590
      005354b1
    • Teresa Johnson's avatar
    • Richard Smith's avatar
      Add missing #include, found by modules build. · 11e14ec1
      Richard Smith authored
      llvm-svn: 239587
      11e14ec1
    • Alexey Samsonov's avatar
      [SanitizerCoverage] Use llvm::getDISubprogram() to get location of the entry basic block. · 201733b7
      Alexey Samsonov authored
      DebugLoc::getFnDebugLoc() should soon be removed. Also,
      getDISubprogram() might become more effective soon and wouldn't need to
      scan debug locations at all, if function-level metadata would be emitted
      by Clang.
      
      llvm-svn: 239586
      201733b7
    • Alexey Samsonov's avatar
      [GVN] Use a simpler form of IRBuilder constructor. · 9947e48c
      Alexey Samsonov authored
      Summary:
      A side effect of this change is that it IRBuilder now automatically
      created debug info locations for new instructions, which is the
      same as debug location of insertion point. This is fine for the
      functions in questions (GetStoreValueForLoad and
      GetMemInstValueForLoad), as they are used in two situations:
        * GVN::processLoad, which tries to eliminate a load. In this case
          new instructions would have the same debug location as the load they
          eventually replace;
        * MaterializeAdjustedValue, which adds new instructions to the end
          of the basic blocks, which could later be used to replace the load
          definition. In this case we don't yet know the way the load would
          be eventually replaced (either by assembling the precomputed values
          via PHI, or by using them directly), so just using the basic block
          strategy seems to be reasonable. There is also a special case
          in the code that *would* adjust the location of the last
          instruction replacing the load definition to the location of the
          load.
      
      Test Plan: regression test suite
      
      Reviewers: echristo, dberlin, dblaikie
      
      Subscribers: llvm-commits
      
      Differential Revision: http://reviews.llvm.org/D10405
      
      llvm-svn: 239585
      9947e48c
    • Alexey Samsonov's avatar
      ff449802
Loading