Skip to content
  • 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
Loading