Skip to content
  1. May 26, 2010
  2. May 25, 2010
  3. May 21, 2010
  4. May 20, 2010
  5. May 19, 2010
  6. May 15, 2010
  7. May 13, 2010
    • Nick Lewycky's avatar
      Remove heinous tabs. · 2b3cbac0
      Nick Lewycky authored
      llvm-svn: 103700
      2b3cbac0
    • Nick Lewycky's avatar
      Replace the core comparison login in merge functions. We can now merge · d3c6dfe8
      Nick Lewycky authored
      vector<>::push_back() in:
      
        int foo(vector<int> &a, vector<unsigned> &b) {
          a.push_back(10);
          b.push_back(11);
        }
      
      to two calls to the same push_back function, or fold away the two copies of
      push_back() in:
      
        struct T { int; };
        struct S { char; };
        vector<T*> t;
        vector<S*> s;
        void f(T *x) { t.push_back(x); }
        void g(S *x) { s.push_back(x); }
      
      but leave f() and g() separate, since they refer to two different global
      variables.
      
      llvm-svn: 103698
      d3c6dfe8
  8. May 12, 2010
  9. May 11, 2010
  10. May 09, 2010
    • Chris Lattner's avatar
      make simplifycfg insert an llvm.trap before the 'unreachable' it introduces · 84d46186
      Chris Lattner authored
      when it detects undefined behavior.  llvm.trap generally codegens into some
      thing really small (e.g. a 2 byte ud2 instruction on x86) and debugging this
      sort of thing is "nontrivial".  For example, we now compile:
      
      void foo() { *(int*)0 = 42; }
      
      into:
      
      _foo:
      	pushl	%ebp
      	movl	%esp, %ebp
      	ud2
      
      Some may even claim that this is a security hole, though that seems dubious
      to me.  This addresses rdar://7958343 - Optimizing away null dereference 
      potentially allows arbitrary code execution
      
      llvm-svn: 103356
      84d46186
  11. May 08, 2010
  12. May 07, 2010
Loading