[PATCH] A new HeapToStack allocation promotion pass
    Stephen Checkoway 
    s at pahtak.org
       
    Tue Sep 24 13:04:14 PDT 2013
    
    
  
On Sep 23, 2013, at 5:00 PM, hfinkel at anl.gov wrote:
> This adds a new optimization pass that can 'promote' malloc'd memory to stack-allocated memory when the lifetime of the allocation can be determined to be bounded by the execution of the function.
Is this transformation safe in general? Various libc implementations have functions for getting information about the allocated chunk. For example, malloc_size(3) on OS X, malloc_usable_size(3) in glibc. This patch seems to break valid code:
[secdev:~/m] s$ uname -a
Linux secdev 3.8.0-30-generic #44-Ubuntu SMP Thu Aug 22 20:52:24 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
[secdev:~/m] s$ cat a.c
#include <malloc.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
  void *p = malloc(10);
  size_t s = malloc_usable_size(p);
  printf("%zu\n", s);
  free(p);
}
[secdev:~/m] s$ ../build-master/bin/clang -Wall a.c
[secdev:~/m] s$ ./a.out
24
[secdev:~/m] s$ ../build-master/bin/clang -Wall a.c -O1
[secdev:~/m] s$ ./a.out
Segmentation fault (core dumped)
-- 
Stephen Checkoway
    
    
More information about the llvm-commits
mailing list