1*39db5e1eSNikita Popov // RUN: %clang_cc1 -triple arm64-darwin -enable-noundef-analysis -emit-llvm -o - %s | FileCheck %s -check-prefix ENABLED 2*39db5e1eSNikita Popov // RUN: %clang_cc1 -triple arm64-darwin -no-enable-noundef-analysis -emit-llvm -o - %s | FileCheck %s -check-prefix DISABLED 3b529744cShyeongyukim 4b529744cShyeongyukim union u1 { 5b529744cShyeongyukim int val; 6b529744cShyeongyukim }; 7b529744cShyeongyukim 8b529744cShyeongyukim struct s1 { 9b529744cShyeongyukim int val; 10b529744cShyeongyukim }; 11b529744cShyeongyukim indirect_callee_int(int a)12b529744cShyeongyukimint indirect_callee_int(int a) { return a; } indirect_callee_union(union u1 a)13b529744cShyeongyukimunion u1 indirect_callee_union(union u1 a) { 14b529744cShyeongyukim return a; 15b529744cShyeongyukim } 16b529744cShyeongyukim 17b529744cShyeongyukim static int sink; 18b529744cShyeongyukim examineValue(int x)19b529744cShyeongyukimstatic void examineValue(int x) { sink = x; } 20b529744cShyeongyukim 21b529744cShyeongyukim // ENABLED-LABEL: @main( 225333447aShyeongyukim // ENABLED: [[CALL:%.*]] = call noundef {{.*}}i32 @_Z19indirect_callee_inti(i32 noundef {{.*}}0) 2335baa267Shyeongyukim // ENABLED: [[CALL1:%.*]] = call i32 @_Z21indirect_callee_union2u1(i64 {{.*}}) 24*39db5e1eSNikita Popov // ENABLED: [[CALL2:%.*]] = call noalias noundef nonnull ptr @_Znwm(i64 noundef 4) #[[ATTR4:[0-9]+]] 25b529744cShyeongyukim // ENABLED: call void @_ZL12examineValuei(i32 noundef {{.*}}) 26b529744cShyeongyukim // DISABLED-LABEL: @main( 275333447aShyeongyukim // DISABLED: [[CALL:%.*]] = call {{.*}}i32 @_Z19indirect_callee_inti(i32 {{.*}}0) 2835baa267Shyeongyukim // DISABLED: [[CALL1:%.*]] = call i32 @_Z21indirect_callee_union2u1(i64 {{.*}}) 29*39db5e1eSNikita Popov // DISABLED: [[CALL2:%.*]] = call noalias nonnull ptr @_Znwm(i64 4) #[[ATTR4:[0-9]+]] 30b529744cShyeongyukim // DISABLED: call void @_ZL12examineValuei(i32 {{.*}}) main()31b529744cShyeongyukimint main() { 32b529744cShyeongyukim indirect_callee_int(0); 33b529744cShyeongyukim indirect_callee_union((union u1){0}); 34b529744cShyeongyukim 35b529744cShyeongyukim auto s = new s1; 36b529744cShyeongyukim examineValue(s->val); 37b529744cShyeongyukim 38b529744cShyeongyukim return 0; 39b529744cShyeongyukim } 40