12f115fb4SNikita Popov; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature 28ebb3eacSBjorn Pettersson; RUN: opt -S -passes=globalopt -o - < %s | FileCheck %s 3b7cd291cSVedant Kumar 4b7cd291cSVedant Kumartarget datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" 5b7cd291cSVedant Kumartarget triple = "x86_64-unknown-linux-gnu" 6b7cd291cSVedant Kumar 7*d4191beeSNikita Popov@_ZL3g_i = internal global ptr null, align 8 8b7cd291cSVedant Kumar@.str = private unnamed_addr constant [2 x i8] c"0\00", align 1 9b7cd291cSVedant Kumar@.str.1 = private unnamed_addr constant [2 x i8] c"1\00", align 1 10b7cd291cSVedant Kumar 11b7cd291cSVedant Kumardefine dso_local i32 @main() { 122f115fb4SNikita Popov; CHECK-LABEL: define {{[^@]+}}@main() local_unnamed_addr { 132f115fb4SNikita Popov; CHECK-NEXT: bb: 14*d4191beeSNikita Popov; CHECK-NEXT: store ptr null, ptr @_ZL3g_i, align 8 152f115fb4SNikita Popov; CHECK-NEXT: call fastcc void @_ZL13PutsSomethingv() 162f115fb4SNikita Popov; CHECK-NEXT: ret i32 0 172f115fb4SNikita Popov; 182f115fb4SNikita Popovbb: 19*d4191beeSNikita Popov store ptr null, ptr @_ZL3g_i, align 8 20b7cd291cSVedant Kumar call void @_ZL13PutsSomethingv() 21b7cd291cSVedant Kumar ret i32 0 22b7cd291cSVedant Kumar} 23b7cd291cSVedant Kumar 24b7cd291cSVedant Kumardefine internal void @_ZL13PutsSomethingv() { 252f115fb4SNikita Popov; CHECK-LABEL: define {{[^@]+}}@_ZL13PutsSomethingv() unnamed_addr { 262f115fb4SNikita Popov; CHECK-NEXT: bb: 27*d4191beeSNikita Popov; CHECK-NEXT: [[I:%.*]] = load ptr, ptr @_ZL3g_i, align 8 28*d4191beeSNikita Popov; CHECK-NEXT: [[I1:%.*]] = icmp eq ptr [[I]], null 292f115fb4SNikita Popov; CHECK-NEXT: br i1 [[I1]], label [[BB2:%.*]], label [[BB6:%.*]] 302f115fb4SNikita Popov; CHECK: bb2: 31*d4191beeSNikita Popov; CHECK-NEXT: [[I3:%.*]] = call noalias ptr @malloc(i64 4) 32*d4191beeSNikita Popov; CHECK-NEXT: store ptr [[I3]], ptr @_ZL3g_i, align 8 33*d4191beeSNikita Popov; CHECK-NEXT: [[I5:%.*]] = call i32 @puts(ptr @.str) 342f115fb4SNikita Popov; CHECK-NEXT: br label [[BB8:%.*]] 352f115fb4SNikita Popov; CHECK: bb6: 36*d4191beeSNikita Popov; CHECK-NEXT: [[I7:%.*]] = call i32 @puts(ptr @.str.1) 372f115fb4SNikita Popov; CHECK-NEXT: br label [[BB8]] 382f115fb4SNikita Popov; CHECK: bb8: 392f115fb4SNikita Popov; CHECK-NEXT: ret void 402f115fb4SNikita Popov; 412f115fb4SNikita Popovbb: 42*d4191beeSNikita Popov %i = load ptr, ptr @_ZL3g_i, align 8 43*d4191beeSNikita Popov %i1 = icmp eq ptr %i, null 442f115fb4SNikita Popov br i1 %i1, label %bb2, label %bb6 45b7cd291cSVedant Kumar 462f115fb4SNikita Popovbb2: ; preds = %bb 47*d4191beeSNikita Popov %i3 = call noalias ptr @malloc(i64 4) 48*d4191beeSNikita Popov store ptr %i3, ptr @_ZL3g_i, align 8 49*d4191beeSNikita Popov %i5 = call i32 @puts(ptr @.str) 502f115fb4SNikita Popov br label %bb8 51b7cd291cSVedant Kumar 522f115fb4SNikita Popovbb6: ; preds = %bb 53*d4191beeSNikita Popov %i7 = call i32 @puts(ptr @.str.1) 542f115fb4SNikita Popov br label %bb8 55b7cd291cSVedant Kumar 562f115fb4SNikita Popovbb8: ; preds = %bb6, %bb2 57b7cd291cSVedant Kumar ret void 58b7cd291cSVedant Kumar} 59b7cd291cSVedant Kumar 602f115fb4SNikita Popov; Function Attrs: allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) 61*d4191beeSNikita Popovdeclare dso_local noalias ptr @malloc(i64) #0 62b7cd291cSVedant Kumar 63*d4191beeSNikita Popovdeclare dso_local i32 @puts(ptr nocapture readonly) 64