xref: /llvm-project/llvm/test/Transforms/NewGVN/2008-07-02-Unreachable.ll (revision 229640343e400394b315c6798c7c19e8a9bd188c)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4
2; RUN: opt < %s -passes=newgvn -S | FileCheck %s
3; PR2503
4
5@g_3 = external global i8		; <ptr> [#uses=2]
6
7define i8 @func_1(i32 %x, i32 %y) nounwind  {
8; CHECK-LABEL: define i8 @func_1(
9; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) #[[ATTR0:[0-9]+]] {
10; CHECK-NEXT:  entry:
11; CHECK-NEXT:    [[A:%.*]] = alloca i8, align 1
12; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i32 [[X]], [[Y]]
13; CHECK-NEXT:    br i1 [[CMP]], label [[IFELSE:%.*]], label [[IFTHEN:%.*]]
14; CHECK:       ifthen:
15; CHECK-NEXT:    br label [[IFEND:%.*]]
16; CHECK:       ifelse:
17; CHECK-NEXT:    [[TMP3:%.*]] = load i8, ptr @g_3, align 1
18; CHECK-NEXT:    store i8 [[TMP3]], ptr [[A]], align 1
19; CHECK-NEXT:    br label [[AFTERFOR:%.*]]
20; CHECK:       forcond:
21; CHECK-NEXT:    store i8 poison, ptr null, align 1
22; CHECK-NEXT:    br i1 false, label [[AFTERFOR]], label [[FORBODY:%.*]]
23; CHECK:       forbody:
24; CHECK-NEXT:    store i8 poison, ptr null, align 1
25; CHECK-NEXT:    br label [[FORINC:%.*]]
26; CHECK:       forinc:
27; CHECK-NEXT:    store i8 poison, ptr null, align 1
28; CHECK-NEXT:    br label [[FORCOND:%.*]]
29; CHECK:       afterfor:
30; CHECK-NEXT:    ret i8 [[TMP3]]
31; CHECK:       ifend:
32; CHECK-NEXT:    ret i8 0
33;
34entry:
35  %A = alloca i8
36  %cmp = icmp eq i32 %x, %y
37  br i1 %cmp, label %ifelse, label %ifthen
38
39ifthen:		; preds = %entry
40  br label %ifend
41
42ifelse:		; preds = %entry
43  %tmp3 = load i8, ptr @g_3		; <i8> [#uses=0]
44  store i8 %tmp3, ptr %A
45  br label %afterfor
46
47forcond:		; preds = %forinc
48  br i1 false, label %afterfor, label %forbody
49
50forbody:		; preds = %forcond
51  br label %forinc
52
53forinc:		; preds = %forbody
54  br label %forcond
55
56afterfor:		; preds = %forcond, %forcond.thread
57  %tmp10 = load i8, ptr @g_3		; <i8> [#uses=0]
58  ret i8 %tmp10
59
60ifend:		; preds = %afterfor, %ifthen
61  ret i8 0
62}
63