Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(245)

Side by Side Diff: test/Transforms/NaCl/pnacl-sjlj-eh-bug.ll

Issue 1151093004: Changes from 3.7 merge to files not in upstream (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-llvm.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 ; RUN: opt %s -pnacl-sjlj-eh -O2 -S | FileCheck %s 1 ; RUN: opt %s -pnacl-sjlj-eh -O2 -S | FileCheck %s
2 2
3 ; datalayout must be specified for GVN to work. 3 ; datalayout must be specified for GVN to work.
4 target datalayout = "p:32:32:32" 4 target datalayout = "p:32:32:32"
5 5
6 ; This must be declared for expanding "invoke" and "landingpad" instructions. 6 ; This must be declared for expanding "invoke" and "landingpad" instructions.
7 @__pnacl_eh_stack = external thread_local global i8* 7 @__pnacl_eh_stack = external thread_local global i8*
8 8
9 declare i1 @might_be_setjmp() 9 declare i1 @might_be_setjmp()
10 declare void @external_func(i32* %ptr) 10 declare void @external_func(i32* %ptr)
11 declare void @var_is_nonzero() 11 declare void @var_is_nonzero()
12 12
13 13
14 ; Test for a bug in which PNaClSjLjEH would transform 14 ; Test for a bug in which PNaClSjLjEH would transform
15 ; @invoke_optimize_test() such that the call to @var_is_nonzero() 15 ; @invoke_optimize_test() such that the call to @var_is_nonzero()
16 ; could get optimized away by a later optimization pass. This 16 ; could get optimized away by a later optimization pass. This
17 ; happened because PNaClSjLjEH generated code similar to 17 ; happened because PNaClSjLjEH generated code similar to
18 ; @branch_optimize_test() below. 18 ; @branch_optimize_test() below.
19 19
20 define void @invoke_optimize_test() { 20 define void @invoke_optimize_test() {
21 %var = alloca i32 21 %var = alloca i32
22 store i32 0, i32* %var 22 store i32 0, i32* %var
23 23
24 invoke void @external_func(i32* %var) 24 invoke void @external_func(i32* %var)
25 to label %exit unwind label %lpad 25 to label %exit unwind label %lpad
26 26
27 lpad: 27 lpad:
28 landingpad i32 personality i8* null 28 landingpad i32 personality i8* null
29 catch i8* null 29 catch i8* null
30 %value = load i32* %var 30 %value = load i32, i32* %var
31 %is_zero = icmp eq i32 %value, 0 31 %is_zero = icmp eq i32 %value, 0
32 br i1 %is_zero, label %exit, label %do_call 32 br i1 %is_zero, label %exit, label %do_call
33 33
34 do_call: 34 do_call:
35 call void @var_is_nonzero() 35 call void @var_is_nonzero()
36 ret void 36 ret void
37 37
38 exit: 38 exit:
39 ret void 39 ret void
40 } 40 }
(...skipping 18 matching lines...) Expand all
59 store i32 0, i32* %var 59 store i32 0, i32* %var
60 60
61 %cond = call i1 @might_be_setjmp() returns_twice 61 %cond = call i1 @might_be_setjmp() returns_twice
62 br i1 %cond, label %iftrue, label %iffalse 62 br i1 %cond, label %iftrue, label %iffalse
63 63
64 iftrue: 64 iftrue:
65 call void @external_func(i32* %var) 65 call void @external_func(i32* %var)
66 ret void 66 ret void
67 67
68 iffalse: 68 iffalse:
69 %value = load i32* %var 69 %value = load i32, i32* %var
70 %is_zero = icmp eq i32 %value, 0 70 %is_zero = icmp eq i32 %value, 0
71 br i1 %is_zero, label %exit, label %do_call 71 br i1 %is_zero, label %exit, label %do_call
72 72
73 do_call: 73 do_call:
74 call void @var_is_nonzero() 74 call void @var_is_nonzero()
75 ret void 75 ret void
76 76
77 exit: 77 exit:
78 ret void 78 ret void
79 } 79 }
80 ; CHECK: define void @branch_optimize_test() 80 ; CHECK: define void @branch_optimize_test()
81 ; CHECK-NOT: @var_is_nonzero 81 ; CHECK-NOT: @var_is_nonzero
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698