|
1 |
| -; RUN: opt < %s -passes='loop(simple-loop-unswitch),instcombine' -verify-memoryssa -disable-output |
2 |
| - %struct.ClassDef = type { %struct.QByteArray, %struct.QByteArray, %"struct.QList<ArgumentDef>", %"struct.QList<ArgumentDef>", i8, i8, %"struct.QList<ArgumentDef>", %"struct.QList<ArgumentDef>", %"struct.QList<ArgumentDef>", %"struct.QList<ArgumentDef>", %"struct.QList<ArgumentDef>", %"struct.QList<ArgumentDef>", %"struct.QMap<QByteArray,QByteArray>", %"struct.QList<ArgumentDef>", %"struct.QMap<QByteArray,QByteArray>", i32, i32 } |
3 |
| - %struct.FILE = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i16, i8, [1 x i8], ptr, i64, ptr, ptr, ptr, ptr, i32, i32, [40 x i8] } |
4 |
| - %struct.Generator = type { ptr, ptr, %"struct.QList<ArgumentDef>", %struct.QByteArray, %"struct.QList<ArgumentDef>" } |
5 |
| - %struct.QBasicAtomic = type { i32 } |
6 |
| - %struct.QByteArray = type { ptr } |
7 |
| - %"struct.QByteArray::Data" = type { %struct.QBasicAtomic, i32, i32, ptr, [1 x i8] } |
8 |
| - %"struct.QList<ArgumentDef>" = type { %"struct.QList<ArgumentDef>::._19" } |
9 |
| - %"struct.QList<ArgumentDef>::._19" = type { %struct.QListData } |
10 |
| - %struct.QListData = type { ptr } |
11 |
| - %"struct.QListData::Data" = type { %struct.QBasicAtomic, i32, i32, i32, i8, [1 x ptr] } |
12 |
| - %"struct.QMap<QByteArray,QByteArray>" = type { %"struct.QMap<QByteArray,QByteArray>::._56" } |
13 |
| - %"struct.QMap<QByteArray,QByteArray>::._56" = type { ptr } |
14 |
| - %struct.QMapData = type { ptr, [12 x ptr], %struct.QBasicAtomic, i32, i32, i32, i8 } |
15 |
| - %struct._IO_marker = type { ptr, ptr, i32 } |
16 |
| -@.str9 = external constant [1 x i8] ; <ptr> [#uses=1] |
| 1 | +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4 |
| 2 | +; RUN: opt < %s -S -passes='loop(simple-loop-unswitch),instcombine' -verify-memoryssa | FileCheck %s |
| 3 | + |
| 4 | +@.str9 = external constant [1 x i8] |
17 | 5 |
|
18 | 6 | declare i32 @strcmp(ptr, ptr)
|
19 | 7 |
|
20 | 8 | define i32 @_ZN9Generator6strregEPKc(ptr %this, ptr %s) {
|
| 9 | +; CHECK-LABEL: define i32 @_ZN9Generator6strregEPKc( |
| 10 | +; CHECK-SAME: ptr [[THIS:%.*]], ptr [[S:%.*]]) { |
| 11 | +; CHECK-NEXT: entry: |
| 12 | +; CHECK-NEXT: [[TMP122:%.*]] = icmp eq ptr [[S]], null |
| 13 | +; CHECK-NEXT: br label [[BB184:%.*]] |
| 14 | +; CHECK: bb55: |
| 15 | +; CHECK-NEXT: ret i32 0 |
| 16 | +; CHECK: bb88: |
| 17 | +; CHECK-NEXT: br i1 [[TMP122]], label [[BB154:%.*]], label [[BB128:%.*]] |
| 18 | +; CHECK: bb128: |
| 19 | +; CHECK-NEXT: [[TMP138:%.*]] = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) null, ptr noundef nonnull dereferenceable(1) [[S]]) |
| 20 | +; CHECK-NEXT: [[IFTMP_37_0_IN4:%.*]] = icmp eq i32 [[TMP138]], 0 |
| 21 | +; CHECK-NEXT: br i1 [[IFTMP_37_0_IN4]], label [[BB250:%.*]], label [[BB166:%.*]] |
| 22 | +; CHECK: bb154: |
| 23 | +; CHECK-NEXT: br i1 false, label [[BB250]], label [[BB166]] |
| 24 | +; CHECK: bb166: |
| 25 | +; CHECK-NEXT: [[TMP175:%.*]] = add i32 [[IDX_0:%.*]], 1 |
| 26 | +; CHECK-NEXT: [[TMP183:%.*]] = add i32 [[I33_0:%.*]], 1 |
| 27 | +; CHECK-NEXT: br label [[BB184]] |
| 28 | +; CHECK: bb184: |
| 29 | +; CHECK-NEXT: [[I33_0]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[TMP183]], [[BB166]] ] |
| 30 | +; CHECK-NEXT: [[IDX_0]] = phi i32 [ 0, [[ENTRY]] ], [ [[TMP175]], [[BB166]] ] |
| 31 | +; CHECK-NEXT: [[TMP49:%.*]] = icmp slt i32 [[I33_0]], 0 |
| 32 | +; CHECK-NEXT: br i1 [[TMP49]], label [[BB88:%.*]], label [[BB55:%.*]] |
| 33 | +; CHECK: bb250: |
| 34 | +; CHECK-NEXT: ret i32 [[IDX_0]] |
| 35 | +; |
21 | 36 | entry:
|
22 |
| - %s_addr.0 = select i1 false, ptr @.str9, ptr %s ; <ptr> [#uses=2] |
23 |
| - %tmp122 = icmp eq ptr %s_addr.0, null ; <i1> [#uses=1] |
24 |
| - br label %bb184 |
25 |
| - |
26 |
| -bb55: ; preds = %bb184 |
27 |
| - ret i32 0 |
28 |
| - |
29 |
| -bb88: ; preds = %bb184 |
30 |
| - br i1 %tmp122, label %bb154, label %bb128 |
31 |
| - |
32 |
| -bb128: ; preds = %bb88 |
33 |
| - %tmp138 = call i32 @strcmp( ptr null, ptr %s_addr.0 ) ; <i32> [#uses=1] |
34 |
| - %iftmp.37.0.in4 = icmp eq i32 %tmp138, 0 ; <i1> [#uses=1] |
35 |
| - br i1 %iftmp.37.0.in4, label %bb250, label %bb166 |
36 |
| - |
37 |
| -bb154: ; preds = %bb88 |
38 |
| - br i1 false, label %bb250, label %bb166 |
39 |
| - |
40 |
| -bb166: ; preds = %bb154, %bb128 |
41 |
| - %tmp175 = add i32 %idx.0, 1 ; <i32> [#uses=1] |
42 |
| - %tmp177 = add i32 %tmp175, 0 ; <i32> [#uses=1] |
43 |
| - %tmp181 = add i32 %tmp177, 0 ; <i32> [#uses=1] |
44 |
| - %tmp183 = add i32 %i33.0, 1 ; <i32> [#uses=1] |
45 |
| - br label %bb184 |
46 |
| - |
47 |
| -bb184: ; preds = %bb166, %entry |
48 |
| - %i33.0 = phi i32 [ 0, %entry ], [ %tmp183, %bb166 ] ; <i32> [#uses=2] |
49 |
| - %idx.0 = phi i32 [ 0, %entry ], [ %tmp181, %bb166 ] ; <i32> [#uses=2] |
50 |
| - %tmp49 = icmp slt i32 %i33.0, 0 ; <i1> [#uses=1] |
51 |
| - br i1 %tmp49, label %bb88, label %bb55 |
52 |
| - |
53 |
| -bb250: ; preds = %bb154, %bb128 |
54 |
| - ret i32 %idx.0 |
| 37 | + %s_addr.0 = select i1 false, ptr @.str9, ptr %s |
| 38 | + %tmp122 = icmp eq ptr %s_addr.0, null |
| 39 | + br label %bb184 |
| 40 | + |
| 41 | +bb55: |
| 42 | + ret i32 0 |
| 43 | + |
| 44 | +bb88: |
| 45 | + br i1 %tmp122, label %bb154, label %bb128 |
| 46 | + |
| 47 | +bb128: |
| 48 | + %tmp138 = call i32 @strcmp( ptr null, ptr %s_addr.0 ) |
| 49 | + %iftmp.37.0.in4 = icmp eq i32 %tmp138, 0 |
| 50 | + br i1 %iftmp.37.0.in4, label %bb250, label %bb166 |
| 51 | + |
| 52 | +bb154: |
| 53 | + br i1 false, label %bb250, label %bb166 |
| 54 | + |
| 55 | +bb166: |
| 56 | + %tmp175 = add i32 %idx.0, 1 |
| 57 | + %tmp177 = add i32 %tmp175, 0 |
| 58 | + %tmp181 = add i32 %tmp177, 0 |
| 59 | + %tmp183 = add i32 %i33.0, 1 |
| 60 | + br label %bb184 |
| 61 | + |
| 62 | +bb184: |
| 63 | + %i33.0 = phi i32 [ 0, %entry ], [ %tmp183, %bb166 ] |
| 64 | + %idx.0 = phi i32 [ 0, %entry ], [ %tmp181, %bb166 ] |
| 65 | + %tmp49 = icmp slt i32 %i33.0, 0 |
| 66 | + br i1 %tmp49, label %bb88, label %bb55 |
| 67 | + |
| 68 | +bb250: |
| 69 | + ret i32 %idx.0 |
55 | 70 | }
|
0 commit comments