[LLVMdev] optimization assumes malloc return is non-null

Ryan M. Lefever lefever at crhc.uiuc.edu
Wed Apr 30 11:10:50 PDT 2008

Consider the following c code:

#include <stdlib.h>

int main(int argc, char** argv){
   if(malloc(sizeof(int)) == NULL){ return 0; }
   else{ return 1; }

When I compile it with -O3, it produces the following bytecode:

define i32 @main(i32 %argc, i8** %argv) {
         ret i32 1

Is this an error?  It should be possible for malloc to return NULL, if 
it can not allocate more space.  In fact, some programs should be able 
to gracefully handle such situations.


More information about the llvm-dev mailing list