Skip to content
  1. Jun 06, 2013
  2. Jun 05, 2013
    • David Blaikie's avatar
      PR15662: Optimized debug info produces out of order function parameters · 6f1a8067
      David Blaikie authored
      When a function is inlined we lazily construct the variables
      representing the function's parameters. After that, we add any remaining
      unused parameters.
      
      If the function doesn't use all the parameters, or uses them out of
      order, then the DWARF would produce them in that order, producing a
      parameter order that doesn't match the source.
      
      This fix causes us to always keep the arg variables at the start of the
      variable list & in the original order from the source.
      
      llvm-svn: 183297
      6f1a8067
  3. Jun 04, 2013
    • Shuxin Yang's avatar
      Fix a defect in code-layout pass, improving Benchmarks/Olden/em3d/em3d by about 30% · 8b8fd217
      Shuxin Yang authored
      (4.58s vs 3.2s on an oldish Mac Tower). 
      
        The corresponding src is excerpted bellow. The lopp accounts for about 90% of execution time.
        --------------------
          cat -n test-suite/MultiSource/Benchmarks/Olden/em3d/make_graph.c
           90 
           91         for (k=0; k<j; k++)
           92           if (other_node == cur_node->to_nodes[k]) break;
      
        The defective layout is sketched bellow, where the two branches need to swap.
        ------------------------------------------------------------------------
            L:
               ...
            if (cond) goto out-of-loop
            goto L
      
        While this code sequence is defective, I don't understand why it incurs 1/3 of 
      execution time. CPU-event-profiling indicates the poor laoyout dose not increase
      in br-misprediction; it dosen't increase stall cycle at all, and it dosen't 
      prevent the CPU detect the loop (i.e. Loop-Stream-Detector seems to be working fine
      as well)... 
      
         The root cause of the problem is that the layout pass calls AnalyzeBranch() 
      with basic-block which is not updated to reflect its current layout.
      
      rdar://13966341
      
      llvm-svn: 183174
      8b8fd217
  4. Jun 01, 2013
  5. May 31, 2013
  6. May 30, 2013
    • Tim Northover's avatar
      Fix rematerialization into physical registers. · 69cd121d
      Tim Northover authored
      r182872 introduced a bug in how the register-coalescer's rematerialization
      handled defining a physical register. It relied on the output of the
      coalescer's setRegisters method to determine whether the replacement
      instruction needed an implicit-def. However, this value isn't necessarily the
      same as the CopyMI's actual destination register which is what the rest of the
      basic-block expects us to be defining.
      
      The commit changes the rematerializer to use the actual register attached to
      CopyMI in its decision.
      
      This will be tested soon by an X86 patch which moves everything to using
      MOV32r0 instead of other sizes.
      
      llvm-svn: 182925
      69cd121d
    • Eric Christopher's avatar
      Rename variable to be more descriptive. · d1c5a317
      Eric Christopher authored
      llvm-svn: 182903
      d1c5a317
    • Eric Christopher's avatar
      Formatting. · 1e1c7f1b
      Eric Christopher authored
      llvm-svn: 182902
      1e1c7f1b
    • Andrew Trick's avatar
      Order CALLSEQ_START and CALLSEQ_END nodes. · ad6d08ac
      Andrew Trick authored
      Fixes PR16146: gdb.base__call-ar-st.exp fails after
      pre-RA-sched=source fixes.
      
      Patch by Xiaoyi Guo!
      
      This also fixes an unsupported dbg.value test case. Codegen was
      previously incorrect but the test was passing by luck.
      
      llvm-svn: 182885
      ad6d08ac
  7. May 29, 2013
  8. May 28, 2013
  9. May 27, 2013
    • Preston Gurd's avatar
      Convert sqrt functions into sqrt instructions when -ffast-math is in effect. · 048f99de
      Preston Gurd authored
      When -ffast-math is in effect (on Linux, at least), clang defines
      __FINITE_MATH_ONLY__ > 0 when including <math.h>. This causes the
      preprocessor to include <bits/math-finite.h>, which renames the sqrt functions.
      For instance, "sqrt" is renamed as "__sqrt_finite". 
      
      This patch adds the 3 new names in such a way that they will be treated
      as equivalent to their respective original names.
      
      llvm-svn: 182739
      048f99de
  10. May 26, 2013
  11. May 25, 2013
  12. May 23, 2013
  13. May 22, 2013
  14. May 21, 2013
  15. May 20, 2013
  16. May 18, 2013
Loading