Nick Lewycky | faa9c3b0 | 2012-07-24 07:21:08 +0000 | [diff] [blame] | 1 | ; RUN: opt -globalopt -S -o - < %s | FileCheck %s |
| 2 | |
Nick Lewycky | d2c3bdd | 2012-07-29 01:15:37 +0000 | [diff] [blame] | 3 | @glbl = internal global i8* null |
Nick Lewycky | faa9c3b0 | 2012-07-24 07:21:08 +0000 | [diff] [blame] | 4 | |
| 5 | define void @test1a() { |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 6 | ; CHECK-LABEL: @test1a( |
Nick Lewycky | faa9c3b0 | 2012-07-24 07:21:08 +0000 | [diff] [blame] | 7 | ; CHECK-NOT: store |
| 8 | ; CHECK-NEXT: ret void |
Nick Lewycky | d2c3bdd | 2012-07-29 01:15:37 +0000 | [diff] [blame] | 9 | store i8* null, i8** @glbl |
Nick Lewycky | faa9c3b0 | 2012-07-24 07:21:08 +0000 | [diff] [blame] | 10 | ret void |
| 11 | } |
| 12 | |
| 13 | define void @test1b(i8* %p) { |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 14 | ; CHECK-LABEL: @test1b( |
Nick Lewycky | faa9c3b0 | 2012-07-24 07:21:08 +0000 | [diff] [blame] | 15 | ; CHECK-NEXT: store |
| 16 | ; CHECK-NEXT: ret void |
Nick Lewycky | d2c3bdd | 2012-07-29 01:15:37 +0000 | [diff] [blame] | 17 | store i8* %p, i8** @glbl |
Nick Lewycky | faa9c3b0 | 2012-07-24 07:21:08 +0000 | [diff] [blame] | 18 | ret void |
| 19 | } |
Nick Lewycky | d2c3bdd | 2012-07-29 01:15:37 +0000 | [diff] [blame] | 20 | |
| 21 | define void @test2() { |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 22 | ; CHECK-LABEL: @test2( |
Nick Lewycky | d2c3bdd | 2012-07-29 01:15:37 +0000 | [diff] [blame] | 23 | ; 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 | } |
| 30 | declare i8* @strdup(i8*) |
| 31 | declare void @foo2(i8*) |
| 32 | |
David Majnemer | 7fddecc | 2015-06-17 20:52:32 +0000 | [diff] [blame] | 33 | define void @test3() uwtable personality i32 (i32, i64, i8*, i8*)* @__gxx_personality_v0 { |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 34 | ; CHECK-LABEL: @test3( |
Nick Lewycky | d2c3bdd | 2012-07-29 01:15:37 +0000 | [diff] [blame] | 35 | ; CHECK-NOT: bb1: |
| 36 | ; CHECK-NOT: bb2: |
| 37 | ; CHECK: invoke |
| 38 | %ptr = invoke i8* @_Znwm(i64 1) |
| 39 | to label %bb1 unwind label %bb2 |
| 40 | bb1: |
| 41 | store i8* %ptr, i8** @glbl |
| 42 | unreachable |
| 43 | bb2: |
David Majnemer | 7fddecc | 2015-06-17 20:52:32 +0000 | [diff] [blame] | 44 | %tmp1 = landingpad { i8*, i32 } |
Nick Lewycky | d2c3bdd | 2012-07-29 01:15:37 +0000 | [diff] [blame] | 45 | cleanup |
| 46 | resume { i8*, i32 } %tmp1 |
| 47 | } |
| 48 | declare i32 @__gxx_personality_v0(i32, i64, i8*, i8*) |
| 49 | declare i8* @_Znwm(i64) |