Skip to content
  1. Dec 02, 2010
    • Jakob Stoklund Olesen's avatar
      Update LiveDebugVariables during coalescing. · 9ec20111
      Jakob Stoklund Olesen authored
      llvm-svn: 120720
      9ec20111
    • Jakob Stoklund Olesen's avatar
      Implement the first half of LiveDebugVariables. · 4be0bd79
      Jakob Stoklund Olesen authored
      Scan the MachineFunction for DBG_VALUE instructions, and replace them with a
      data structure similar to LiveIntervals. The live range of a DBG_VALUE is
      determined by propagating it down the dominator tree until a new DBG_VALUE is
      found. When a DBG_VALUE lives in a register, its live range is confined to the
      live range of the register's value.
      
      LiveDebugVariables runs before coalescing, so DBG_VALUEs are not artificially
      extended when registers are joined.
      
      The missing half will recreate DBG_VALUE instructions from the intervals when
      register allocation is complete.
      
      The pass is disabled by default. It can be enabled with the temporary command
      line option -live-debug-variables.
      
      llvm-svn: 120636
      4be0bd79
  2. Dec 01, 2010
  3. Nov 30, 2010
  4. Nov 29, 2010
  5. Nov 28, 2010
  6. Nov 25, 2010
  7. Nov 23, 2010
  8. Nov 22, 2010
  9. Nov 20, 2010
  10. Nov 19, 2010
  11. Nov 18, 2010
  12. Nov 17, 2010
    • Evan Cheng's avatar
      Remove ARM isel hacks that fold large immediates into a pair of add, sub, and, · 7f8ab6ee
      Evan Cheng authored
      and xor. The 32-bit move immediates can be hoisted out of loops by machine
      LICM but the isel hacks were preventing them.
      
      Instead, let peephole optimization pass recognize registers that are defined by
      immediates and the ARM target hook will fold the immediates in.
      
      Other changes include 1) do not fold and / xor into cmp to isel TST / TEQ
      instructions if there are multiple uses. This happens when the 'and' is live
      out, machine sink would have sinked the computation and that ends up pessimizing
      code. The peephole pass would recognize situations where the 'and' can be
      toggled to define CPSR and eliminate the comparison anyway.
      
      2) Move peephole pass to after machine LICM, sink, and CSE to avoid blocking
      important optimizations.
      
      rdar://8663787, rdar://8241368
      
      llvm-svn: 119548
      7f8ab6ee
    • Chris Lattner's avatar
      With the newly simplified SourceMgr interfaces and the generalized · 79ffdc75
      Chris Lattner authored
      SrcMgrDiagHandler, we can improve clang diagnostics for inline asm:
      instead of reporting them on a source line of the original line,
      we can report it on the correct line wherever the string literal came
      from. For something like this:
      
      void foo() {
        asm("push %rax\n"
            ".code32\n");
      }
      
      we used to get this: (note that the line in t.c isn't helpful)
      
      t.c:4:7: error: warning: ignoring directive for now
        asm("push %rax\n"
            ^
      <inline asm>:2:1: note: instantiated into assembly here
      .code32
      ^
      
      now we get:
      
      t.c:5:8: error: warning: ignoring directive for now
            ".code32\n"
             ^
      <inline asm>:2:1: note: instantiated into assembly here
      .code32
      ^
      
      Note that we're pointing to line 5 properly now.
      
      llvm-svn: 119488
      79ffdc75
    • Chris Lattner's avatar
      now that AsmPrinter::EmitInlineAsm is factored right, we can eliminate the · b0e36085
      Chris Lattner authored
      cookie argument to the SourceMgr diagnostic stuff.  This cleanly separates
      LLVMContext's inlineasm handler from the sourcemgr error handling 
      definition, increasing type safety and cleaning things up.
      
      llvm-svn: 119486
      b0e36085
Loading