Skip to content
  1. Jan 05, 2014
  2. Jan 04, 2014
  3. Jan 03, 2014
    • Nico Weber's avatar
      Add a LLVM_DUMP_METHOD macro. · 7408c706
      Nico Weber authored
      The motivation is to mark dump methods as used in debug builds so that they can
      be called from lldb, but to not do so in release builds so that they can be
      dead-stripped.
      
      There's lots of potential follow-up work suggested in the thread
      "Should dump methods be LLVM_ATTRIBUTE_USED only in debug builds?" on cfe-dev,
      but everyone seems to agreen on this subset.
      
      Macro name chosen by fair coin toss.
      
      llvm-svn: 198456
      7408c706
    • Jack Carter's avatar
    • Adrian Prantl's avatar
      81e5cd9e
    • Reid Kleckner's avatar
      Revert "For disassembly when adding a symbolic operand that is a C++ symbol... · 19bccb79
      Reid Kleckner authored
      Revert "For disassembly when adding a symbolic operand that is a C++ symbol name, also put the human readable name in a comment."
      
      This reverts commit r198441.
      
      This change doesn't build on Windows, and doesn't do the right thing on
      Linux and other platforms that don't use a _Z prefix instead of __Z for
      C++ names.
      
      It also had no tests, so it wasn't clear how to fix it forward.
      
      llvm-svn: 198445
      19bccb79
    • Rafael Espindola's avatar
      Fix typo. · aa842f06
      Rafael Espindola authored
      Thanks to Owen Anderson for noticing it.
      
      llvm-svn: 198443
      aa842f06
    • Kevin Enderby's avatar
      For disassembly when adding a symbolic operand that is a C++ · b05bec7c
      Kevin Enderby authored
      symbol name, also put the human readable name in a comment.
      
      Also fix a bug in LLVMDisasmInstruction() that was not flushing
      the raw_svector_ostream for the disassembled instruction string
      before copying it to the output buffer that was causing truncation
      of the output.
      
      rdar://10173828
      
      llvm-svn: 198441
      b05bec7c
    • Rafael Espindola's avatar
      Make the llvm mangler depend only on DataLayout. · 58873566
      Rafael Espindola authored
      Before this patch any program that wanted to know the final symbol name of a
      GlobalValue had to link with Target.
      
      This patch implements a compromise solution where the mangler uses DataLayout.
      This way, any tool that already links with Target (llc, clang) gets the exact
      behavior as before and new IR files can be mangled without linking with Target.
      
      With this patch the mangler is constructed with just a DataLayout and DataLayout
      is extended to include the information the Mangler needs.
      
      llvm-svn: 198438
      58873566
    • Ana Pazos's avatar
      [AArch64][NEON] Added SXTL and SXTL2 instruction aliases · e891c5f2
      Ana Pazos authored
      llvm-svn: 198437
      e891c5f2
    • David Blaikie's avatar
      Revert "Revert "Debug Info: Type Units: Simplify type hashing using IR-provided unique names."" · cfb2115e
      David Blaikie authored
      This reverts commit r198398, thus reapplying r198397.
      
      I had accidentally introduced an endianness issue when applying the hash
      to the type unit. Using support::ulittle64_t in the reinterpret_cast in
      addDwarfTypeUnitType fixes this issue.
      
      Original commit message:
      
      Debug Info: Type Units: Simplify type hashing using IR-provided unique
      names.
      
      What's good for LTO metadata size problems ought to be good for non-LTO
      debug info size too, so let's rely on the same uniqueness in both cases.
      If it's insufficient for non-LTO for whatever reason (since we now won't
      be uniquing CU-local types or any C types - but these are likely to not
      be the most significant contributors to type bloat) we should consider a
      frontend solution that'll help both LTO and non-LTO alike, rather than
      using DWARF-level DIE-hashing that only helps non-LTO debug info size.
      
      It's also much simpler this way and benefits C++ even more since we can
      deduplicate lexically separate definitions of the same C++ type since
      they have the same mangled name.
      
      llvm-svn: 198436
      cfb2115e
    • David Peixotto's avatar
      Fix loop rerolling pass failure with non-consant loop lower bound · ea9ba446
      David Peixotto authored
      The loop rerolling pass was failing with an assertion failure from a
      failed cast on loops like this:
      
        void foo(int *A, int *B, int m, int n) {
          for (int i = m; i < n; i+=4) {
            A[i+0] = B[i+0] * 4;
            A[i+1] = B[i+1] * 4;
            A[i+2] = B[i+2] * 4;
            A[i+3] = B[i+3] * 4;
          }
        }
      
      The code was casting the SCEV-expanded code for the new
      induction variable to a phi-node. When the loop had a non-constant
      lower bound, the SCEV expander would end the code expansion with an
      add insted of a phi node and the cast would fail.
      
      It looks like the cast to a phi node was only needed to get the
      induction variable value coming from the backedge to compute the end
      of loop condition. This patch changes the loop reroller to compare
      the induction variable to the number of times the backedge is taken
      instead of the iteration count of the loop. In other words, we stop
      the loop when the current value of the induction variable ==
      IterationCount-1. Previously, the comparison was comparing the
      induction variable value from the next iteration == IterationCount.
      
      This problem only seems to occur on 32-bit targets. For some reason,
      the loop is not rerolled on 64-bit targets.
      
      PR18290
      
      llvm-svn: 198425
      ea9ba446
    • Alp Toker's avatar
      MSVC 2010 build fix · 64f3a6f5
      Alp Toker authored
      Back out the part of r198399 that enabled LLVM_FINAL/LLVM_OVERRIDE on VS 2010.
      
      DwarfUnit.h legitimately uses them on destructors which unfortunately triggers
      Compiler Error C3665 (override specifier not allowed on a destructor/finalizer)
      prior to MSVC 2012:
      
        virtual ~DwarfCompileUnit() LLVM_OVERRIDE;
      
      llvm-svn: 198401
      64f3a6f5
    • Arnold Schwaighofer's avatar
      BasicAA: Use reachabilty instead of dominance for checking value equality in phi · 833a82ec
      Arnold Schwaighofer authored
      cycles
      
      This allows the value equality check to work even if we don't have a dominator
      tree. Also add some more comments.
      
      I was worried about compile time impacts and did not implement reachability but
      used the dominance check in the initial patch. The trade-off was that the
      dominator tree was required.
      The llvm utility function isPotentiallyReachable cuts off the recursive search
      after 32 visits. Testing did not show any compile time regressions showing my
      worries unjustfied.
      
      No compile time or performance regressions at O3 -flto -mavx on test-suite +
      externals.
      
      Addresses review comments from r198290.
      
      llvm-svn: 198400
      833a82ec
    • Alp Toker's avatar
      Enable LLVM_FINAL, LLVM_OVERRIDE and LLVM_HAS_VARIADIC_TEMPLATES with more gcc and MSVC versions · 90e5fff1
      Alp Toker authored
      The 'sealed' definition of LLVM_FINAL can be dropped once VS 2010 is
      decommissioned.
      
      Some of this is speculative so will keep an eye on the waterfall -- ping me if
      you see failures.
      
      Incremental work towards C++11 migration.
      
      llvm-svn: 198399
      90e5fff1
    • David Blaikie's avatar
      Revert "Debug Info: Type Units: Simplify type hashing using IR-provided unique names." · ab0ba249
      David Blaikie authored
      Reverting due to bot failure I won't have time to investigate until
      tomorrow.
      
      This reverts commit r198397.
      
      llvm-svn: 198398
      ab0ba249
    • David Blaikie's avatar
      Debug Info: Type Units: Simplify type hashing using IR-provided unique names. · ddb66281
      David Blaikie authored
      What's good for LTO metadata size problems ought to be good for non-LTO
      debug info size too, so let's rely on the same uniqueness in both cases.
      If it's insufficient for non-LTO for whatever reason (since we now won't
      be uniquing CU-local types or any C types - but these are likely to not
      be the most significant contributors to type bloat) we should consider a
      frontend solution that'll help both LTO and non-LTO alike, rather than
      using DWARF-level DIE-hashing that only helps non-LTO debug info size.
      
      It's also much simpler this way and benefits C++ even more since we can
      deduplicate lexically separate definitions of the same C++ type since
      they have the same mangled name.
      
      llvm-svn: 198397
      ddb66281
    • Eric Christopher's avatar
      80-column. · 4d214b9e
      Eric Christopher authored
      llvm-svn: 198394
      4d214b9e
    • Eric Christopher's avatar
      Remove TextSectionSym as it is unused. · 50effa04
      Eric Christopher authored
      llvm-svn: 198393
      50effa04
    • David Blaikie's avatar
      Revert "Reverting r193835 due to weirdness with Go..." · 22b29a5f
      David Blaikie authored
      The cgo problem was that it wants dwarf2 which doesn't support direct
      constant encoding of the location. So let's add support for dwarf2
      encoding (using a location expression) of data member locations.
      
      This reverts commit r198385.
      
      llvm-svn: 198389
      22b29a5f
    • David Blaikie's avatar
      Reverting r193835 due to weirdness with Go... · 2ada116a
      David Blaikie authored
      Apologies for the noise - we're seeing some Go failures with cgo
      interacting with Clang's debug info due to this change.
      
      llvm-svn: 198385
      2ada116a
    • David Blaikie's avatar
    • David Blaikie's avatar
      Test coverage for non-default-constructible elements in a StringMap · e9c66ed8
      David Blaikie authored
      This functionality was enabled by r198374. Here's a test to ensure it
      works and we don't regress it.
      
      Based on a patch by Maciej Piechotka.
      
      llvm-svn: 198377
      e9c66ed8
    • David Blaikie's avatar
      Remove StringMapEntryInitializer support. · eba457c2
      David Blaikie authored
      It was never specialized so let's just remove that unused
      configurability and always do the default.
      
      llvm-svn: 198374
      eba457c2
  4. Jan 02, 2014
    • Quentin Colombet's avatar
      [RegAlloc] Make tryInstructionSplit less aggressive. · 1fb3362a
      Quentin Colombet authored
      The greedy register allocator tries to split a live-range around each
      instruction where it is used or defined to relax the constraints on the entire
      live-range (this is a last chance split before falling back to spill).
      The goal is to have a big live-range that is unconstrained (i.e., that can use
      the largest legal register class) and several small local live-range that carry
      the constraints implied by each instruction.
      E.g.,
      Let csti be the constraints on operation i.
      
      V1=
      op1 V1(cst1)
      op2 V1(cst2)
      
      V1 live-range is constrained on the intersection of cst1 and cst2.
      
      tryInstructionSplit relaxes those constraints by aggressively splitting each
      def/use point:
      V1=
      V2 = V1
      V3 = V2
      op1 V3(cst1)
      V4 = V2
      op2 V4(cst2)
      
      Because of how the coalescer infrastructure works, each new variable (V3, V4)
      that is alive at the same time as V1 (or its copy, here V2) interfere with V1.
      Thus, we end up with an uncoalescable copy for each split point.
      
      To make tryInstructionSplit less aggressive, we check if the split point
      actually relaxes the constraints on the whole live-range. If it does not, we do
      not insert it.
      Indeed, it will not help the global allocation problem:
      - V1 will have the same constraints.
      - V1 will have the same interference + possibly the newly added split variable
        VS.
      - VS will produce an uncoalesceable copy if alive at the same time as V1.
      
      <rdar://problem/15570057>
      
      llvm-svn: 198369
      1fb3362a
    • Hal Finkel's avatar
      [PPC] Fix comment to match function name · 860fa905
      Hal Finkel authored
      llvm-svn: 198362
      860fa905
    • Eric Christopher's avatar
      Remove comments on CU skeleton construction, they're probably · 94932438
      Eric Christopher authored
      obvious.
      
      llvm-svn: 198361
      94932438
    • Hal Finkel's avatar
      [PPC] Fix the scheduling of CR logicals on the P7 · 1d429f2e
      Hal Finkel authored
      CR logicals (crand, crxor, etc.) on the P7 need to be in the first slot of each
      dispatch group. The old itinerary entry was just wrong (but has not mattered
      because we don't generate these instructions).
      
      This will matter when, in an upcoming commit, we start generating these
      instructions.
      
      llvm-svn: 198359
      1d429f2e
Loading