[LLVMdev] optimization assumes malloc return is non-null
David Vandevoorde
daveed at vandevoorde.com
Wed Apr 30 11:29:41 PDT 2008
On Apr 30, 2008, at 2:10 PM, Ryan M. Lefever wrote:
> 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) {
> entry:
> 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.
It's an allowable program transformation because a call to malloc is
not in itself a side effect. See e.g. 5.1.2.3 in the C standard.
Daveed
More information about the llvm-dev
mailing list