1 // RUN: %clang_cc1 -std=c++11 -triple x86_64-apple-darwin10 -emit-llvm -o - %s -fsanitize=alignment | FileCheck %s -check-prefixes=ALIGN,COMMON 2 // RUN: %clang_cc1 -std=c++11 -triple x86_64-apple-darwin10 -emit-llvm -o - %s -fsanitize=null | FileCheck %s -check-prefixes=NULL,COMMON 3 // RUN: %clang_cc1 -std=c++11 -triple x86_64-apple-darwin10 -emit-llvm -o - %s -fsanitize=object-size | FileCheck %s -check-prefixes=OBJSIZE,COMMON 4 5 struct A { 6 // COMMON-LABEL: define linkonce_odr void @_ZN1A10do_nothingEv 7 void do_nothing() { 8 // ALIGN-NOT: ptrtoint %struct.A* %{{.*}} to i64, !nosanitize 9 10 // NULL: icmp ne %struct.A* %{{.*}}, null, !nosanitize 11 12 // OBJSIZE-NOT: call i64 @llvm.objectsize 13 } 14 }; 15 16 struct B { 17 int x; 18 19 // COMMON-LABEL: define linkonce_odr void @_ZN1B10do_nothingEv 20 void do_nothing() { 21 // ALIGN: ptrtoint %struct.B* %{{.*}} to i64, !nosanitize 22 // ALIGN: and i64 %{{.*}}, 3, !nosanitize 23 24 // NULL: icmp ne %struct.B* %{{.*}}, null, !nosanitize 25 26 // OBJSIZE-NOT: call i64 @llvm.objectsize 27 } 28 }; 29 30 void force_irgen() { 31 A a; 32 a.do_nothing(); 33 34 B b; 35 b.do_nothing(); 36 } 37