[TTI] getTypeBasedIntrinsicInstrCost - add basic handling for strided load/store...
[llvm-project.git] / llvm / test / Transforms / NewGVN / 2008-07-02-Unreachable.ll
blobcf591d7e2a79a0c08d72c353dc2a364f2eceb4ea
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
5 @g_3 = external global i8               ; <ptr> [#uses=2]
7 define 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
34 entry:
35   %A = alloca i8
36   %cmp = icmp eq i32 %x, %y
37   br i1 %cmp, label %ifelse, label %ifthen
39 ifthen:         ; preds = %entry
40   br label %ifend
42 ifelse:         ; preds = %entry
43   %tmp3 = load i8, ptr @g_3             ; <i8> [#uses=0]
44   store i8 %tmp3, ptr %A
45   br label %afterfor
47 forcond:                ; preds = %forinc
48   br i1 false, label %afterfor, label %forbody
50 forbody:                ; preds = %forcond
51   br label %forinc
53 forinc:         ; preds = %forbody
54   br label %forcond
56 afterfor:               ; preds = %forcond, %forcond.thread
57   %tmp10 = load i8, ptr @g_3            ; <i8> [#uses=0]
58   ret i8 %tmp10
60 ifend:          ; preds = %afterfor, %ifthen
61   ret i8 0