nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at netboot-syslinux-multiplatform 78 lines 3.0 kB view raw
1--- b/include/clang/Basic/TargetInfo.h 2+++ a/include/clang/Basic/TargetInfo.h 3@@ -612,8 +612,8 @@ 4 } 5 6 /// Return the largest alignment for which a suitably-sized allocation with 7+ /// '::operator new(size_t)' is guaranteed to produce a correctly-aligned 8+ /// pointer. 9- /// '::operator new(size_t)' or 'malloc' is guaranteed to produce a 10- /// correctly-aligned pointer. 11 unsigned getNewAlign() const { 12 return NewAlign ? NewAlign : std::max(LongDoubleAlign, LongLongAlign); 13 } 14--- b/lib/CodeGen/CGCall.cpp 15+++ a/lib/CodeGen/CGCall.cpp 16@@ -2048,24 +2048,6 @@ 17 // allows it to work on indirect virtual function calls. 18 if (AttrOnCallSite && TargetDecl->hasAttr<NoMergeAttr>()) 19 FuncAttrs.addAttribute(llvm::Attribute::NoMerge); 20- 21- // Add known guaranteed alignment for allocation functions. 22- if (unsigned BuiltinID = Fn->getBuiltinID()) { 23- switch (BuiltinID) { 24- case Builtin::BIaligned_alloc: 25- case Builtin::BIcalloc: 26- case Builtin::BImalloc: 27- case Builtin::BImemalign: 28- case Builtin::BIrealloc: 29- case Builtin::BIstrdup: 30- case Builtin::BIstrndup: 31- RetAttrs.addAlignmentAttr(Context.getTargetInfo().getNewAlign() / 32- Context.getTargetInfo().getCharWidth()); 33- break; 34- default: 35- break; 36- } 37- } 38 } 39 40 // 'const', 'pure' and 'noalias' attributed functions are also nounwind. 41--- b/test/CodeGen/alloc-fns-alignment.c 42+++ /dev/null 43@@ -1,35 +0,0 @@ 44-// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -emit-llvm < %s | FileCheck %s --check-prefix=ALIGN16 45-// RUN: %clang_cc1 -triple x86_64-windows-msvc -emit-llvm < %s | FileCheck %s --check-prefix=ALIGN16 46-// RUN: %clang_cc1 -triple i386-apple-darwin -emit-llvm < %s | FileCheck %s --check-prefix=ALIGN16 47-// RUN: %clang_cc1 -triple i386-unknown-linux-gnu -emit-llvm < %s | FileCheck %s --check-prefix=ALIGN8 48-// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fno-builtin-malloc -emit-llvm < %s | FileCheck %s --check-prefix=NOBUILTIN-MALLOC 49-// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fno-builtin-calloc -emit-llvm < %s | FileCheck %s --check-prefix=NOBUILTIN-CALLOC 50-// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fno-builtin-realloc -emit-llvm < %s | FileCheck %s --check-prefix=NOBUILTIN-REALLOC 51- 52-typedef __SIZE_TYPE__ size_t; 53- 54-void *malloc(size_t); 55-void *calloc(size_t, size_t); 56-void *realloc(void *, size_t); 57- 58-void *malloc_test(size_t n) { 59- return malloc(n); 60-} 61- 62-void *calloc_test(size_t n) { 63- return calloc(1, n); 64-} 65- 66-void *raalloc_test(void *p, size_t n) { 67- return realloc(p, n); 68-} 69- 70-// ALIGN16: align 16 i8* @malloc 71-// ALIGN16: align 16 i8* @calloc 72-// ALIGN16: align 16 i8* @realloc 73-// ALIGN8: align 8 i8* @malloc 74-// ALIGN8: align 8 i8* @calloc 75-// ALIGN8: align 8 i8* @realloc 76-// NOBUILTIN-MALLOC: declare i8* @malloc 77-// NOBUILTIN-CALLOC: declare i8* @calloc 78-// NOBUILTIN-REALLOC: declare i8* @realloc