Skip to content
  1. Mar 30, 2012
  2. Mar 29, 2012
  3. Mar 28, 2012
    • NAKAMURA Takumi's avatar
      9c7f1242
    • Chandler Carruth's avatar
      Move the emission of strict enum range metadata behind a flag (the same · 8b4140d7
      Chandler Carruth authored
      flag as GCC uses: -fstrict-enums). There is a *lot* of code making
      unwarranted assumptions about the underlying type of enums, and it
      doesn't seem entirely reasonable to eagerly break all of it.
      
      Much more importantly, the current state of affairs is *very* good at
      optimizing based upon this information, which causes failures that are
      very distant from the actual enum. Before we push for enabling this by
      default, I think we need to implement -fcatch-undefined-behavior support
      for instrumenting and trapping whenever we store or load a value outside
      of the range. That way we can track down the misbehaving code very
      quickly.
      
      I discussed this with Rafael, and currently the only important cases he
      is aware of are the bool range-based optimizations which are staying
      hard enabled. We've not seen any issue with those either, and they are
      much more important for performance.
      
      llvm-svn: 153550
      8b4140d7
  4. Mar 26, 2012
  5. Mar 24, 2012
  6. Mar 23, 2012
  7. Mar 22, 2012
  8. Mar 21, 2012
  9. Mar 20, 2012
  10. Mar 16, 2012
  11. Mar 15, 2012
  12. Mar 14, 2012
  13. Mar 13, 2012
  14. Mar 11, 2012
  15. Mar 10, 2012
    • Benjamin Kramer's avatar
      Simplify code. No functionality change. · 53ba6364
      Benjamin Kramer authored
      llvm-svn: 152503
      53ba6364
    • John McCall's avatar
      Remove BlockDeclRefExpr and introduce a bit on DeclRefExpr to · 113bee05
      John McCall authored
      track whether the referenced declaration comes from an enclosing
      local context.  I'm amenable to suggestions about the exact meaning
      of this bit.
      
      llvm-svn: 152491
      113bee05
    • John McCall's avatar
      Unify the BlockDeclRefExpr and DeclRefExpr paths so that · 71335059
      John McCall authored
      we correctly emit loads of BlockDeclRefExprs even when they
      don't qualify as ODR-uses.  I think I'm adequately convinced
      that BlockDeclRefExpr can die.
      
      llvm-svn: 152479
      71335059
    • Daniel Dunbar's avatar
      IRgen/ABI/x86_64: Avoid passing small structs using byval sometimes. · f07b5ec0
      Daniel Dunbar authored
       - We do this when it is easy to determine that the backend will pass them on
         the stack properly by itself.
      
      Currently LLVM codegen is really bad in some cases with byval, for example, on
      the test case here (which is derived from Sema code, which likes to pass
      SourceLocations around)::
      
        struct s47 { unsigned a; };
        void f47(int,int,int,int,int,int,struct s47);
        void test47(int a, struct s47 b) { f47(a, a, a, a, a, a, b); }
      
      we used to emit code like this::
      
        ...
        movl	%esi, -8(%rbp)
        movl	-8(%rbp), %ecx
        movl	%ecx, (%rsp)
        ...
      
      to handle moving the struct onto the stack, which is just appalling.
      
      Now we generate::
      
        movl	%esi, (%rsp)
      
      which seems better, no?
      
      llvm-svn: 152462
      f07b5ec0
  16. Mar 09, 2012
  17. Mar 08, 2012
Loading