blob: 16da5315db0c3f17516c87feb43b48897873a2f7 [file] [log] [blame]
Nick Lewyckyfaa9c3b02012-07-24 07:21:08 +00001; RUN: opt -globalopt -S -o - < %s | FileCheck %s
2
Nick Lewyckyd2c3bdd2012-07-29 01:15:37 +00003@glbl = internal global i8* null
Nick Lewyckyfaa9c3b02012-07-24 07:21:08 +00004
5define void @test1a() {
Stephen Linc1c7a132013-07-14 01:42:54 +00006; CHECK-LABEL: @test1a(
Nick Lewyckyfaa9c3b02012-07-24 07:21:08 +00007; CHECK-NOT: store
8; CHECK-NEXT: ret void
Nick Lewyckyd2c3bdd2012-07-29 01:15:37 +00009 store i8* null, i8** @glbl
Nick Lewyckyfaa9c3b02012-07-24 07:21:08 +000010 ret void
11}
12
13define void @test1b(i8* %p) {
Stephen Linc1c7a132013-07-14 01:42:54 +000014; CHECK-LABEL: @test1b(
Nick Lewyckyfaa9c3b02012-07-24 07:21:08 +000015; CHECK-NEXT: store
16; CHECK-NEXT: ret void
Nick Lewyckyd2c3bdd2012-07-29 01:15:37 +000017 store i8* %p, i8** @glbl
Nick Lewyckyfaa9c3b02012-07-24 07:21:08 +000018 ret void
19}
Nick Lewyckyd2c3bdd2012-07-29 01:15:37 +000020
21define void @test2() {
Stephen Linc1c7a132013-07-14 01:42:54 +000022; CHECK-LABEL: @test2(
Nick Lewyckyd2c3bdd2012-07-29 01:15:37 +000023; CHECK: alloca i8
24 %txt = alloca i8
25 call void @foo2(i8* %txt)
26 %call2 = call i8* @strdup(i8* %txt)
27 store i8* %call2, i8** @glbl
28 ret void
29}
30declare i8* @strdup(i8*)
31declare void @foo2(i8*)
32
David Majnemer7fddecc2015-06-17 20:52:32 +000033define void @test3() uwtable personality i32 (i32, i64, i8*, i8*)* @__gxx_personality_v0 {
Stephen Linc1c7a132013-07-14 01:42:54 +000034; CHECK-LABEL: @test3(
Nick Lewyckyd2c3bdd2012-07-29 01:15:37 +000035; CHECK-NOT: bb1:
36; CHECK-NOT: bb2:
37; CHECK: invoke
38 %ptr = invoke i8* @_Znwm(i64 1)
39 to label %bb1 unwind label %bb2
40bb1:
41 store i8* %ptr, i8** @glbl
42 unreachable
43bb2:
David Majnemer7fddecc2015-06-17 20:52:32 +000044 %tmp1 = landingpad { i8*, i32 }
Nick Lewyckyd2c3bdd2012-07-29 01:15:37 +000045 cleanup
46 resume { i8*, i32 } %tmp1
47}
48declare i32 @__gxx_personality_v0(i32, i64, i8*, i8*)
49declare i8* @_Znwm(i64)