Skip to content
  1. May 25, 2010
  2. May 21, 2010
  3. May 20, 2010
  4. May 19, 2010
  5. May 15, 2010
  6. 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
  7. May 12, 2010
  8. May 11, 2010
  9. 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
  10. May 08, 2010
  11. May 07, 2010
Loading