brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.9 KiB · b2ba42b Raw
142 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 62; RUN: opt < %s -passes=newgvn -S | FileCheck %s3target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"4 5%struct.foo = type { ptr, %struct.zot, ptr }6%struct.zot = type { i64 }7%struct.barney = type <{ ptr, %struct.wibble, %struct.snork, %struct.quux.4, %struct.snork.10, ptr, ptr, i32, i8, i8, [2 x i8] }>8%struct.wibble = type { %struct.pluto, %struct.bar }9%struct.pluto = type { %struct.quux }10%struct.quux = type { %struct.eggs }11%struct.eggs = type { %struct.zot.0, %struct.widget }12%struct.zot.0 = type { ptr, ptr, ptr }13%struct.widget = type { %struct.barney.1 }14%struct.barney.1 = type { [8 x i8] }15%struct.bar = type { [3 x %struct.widget] }16%struct.snork = type <{ %struct.wobble, %struct.bar.3, [7 x i8] }>17%struct.wobble = type { %struct.wombat }18%struct.wombat = type { %struct.zot.2 }19%struct.zot.2 = type { %struct.zot.0, %struct.ham }20%struct.ham = type { %struct.barney.1 }21%struct.bar.3 = type { i8 }22%struct.quux.4 = type <{ %struct.quux.5, %struct.snork.9, [7 x i8] }>23%struct.quux.5 = type { %struct.widget.6 }24%struct.widget.6 = type { %struct.spam }25%struct.spam = type { %struct.zot.0, %struct.ham.7 }26%struct.ham.7 = type { %struct.barney.8 }27%struct.barney.8 = type { [24 x i8] }28%struct.snork.9 = type { i8 }29%struct.snork.10 = type <{ %struct.foo.11, %struct.spam.15, [7 x i8] }>30%struct.foo.11 = type { %struct.snork.12 }31%struct.snork.12 = type { %struct.wombat.13 }32%struct.wombat.13 = type { %struct.zot.0, %struct.wibble.14 }33%struct.wibble.14 = type { %struct.barney.8 }34%struct.spam.15 = type { i8 }35%struct.ham.16 = type { %struct.pluto.17, %struct.pluto.17 }36%struct.pluto.17 = type { %struct.bar.18 }37%struct.bar.18 = type { ptr, %struct.zot.20, %struct.barney.22 }38%struct.baz = type { ptr }39%struct.wibble.19 = type <{ %struct.baz, ptr, ptr, i8, [7 x i8] }>40%struct.zot.20 = type { %struct.ham.21 }41%struct.ham.21 = type { %struct.baz }42%struct.barney.22 = type { %struct.blam }43%struct.blam = type { i64 }44%struct.wobble.23 = type { %struct.spam.24, ptr }45%struct.spam.24 = type { %struct.bar.25, ptr }46%struct.bar.25 = type <{ ptr, i8, i8 }>47%struct.zot.26 = type { ptr, i32, ptr }48%struct.widget.27 = type { %struct.zot.26, ptr }49%struct.wombat.28 = type <{ ptr, i8, i8, [6 x i8] }>50 51; Function Attrs: norecurse nounwind ssp uwtable52define weak_odr hidden ptr @quux(ptr %arg, ptr %arg1) local_unnamed_addr align 2 {53; CHECK-LABEL: define weak_odr hidden ptr @quux(54; CHECK-SAME: ptr [[ARG:%.*]], ptr [[ARG1:%.*]]) local_unnamed_addr align 2 {55; CHECK-NEXT:  [[BB:.*]]:56; CHECK-NEXT:    [[TMP:%.*]] = getelementptr inbounds [[STRUCT_BARNEY:%.*]], ptr [[ARG]], i64 0, i32 3, i32 0, i32 0, i32 057; CHECK-NEXT:    [[TMP3:%.*]] = load ptr, ptr [[TMP]], align 8, !tbaa [[ANYPTR_TBAA2:![0-9]+]]58; CHECK-NEXT:    [[TMP4:%.*]] = getelementptr inbounds [[STRUCT_BARNEY]], ptr [[ARG]], i64 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 159; CHECK-NEXT:    [[TMP6:%.*]] = load ptr, ptr [[TMP4]], align 8, !tbaa [[ANYPTR_TBAA7:![0-9]+]]60; CHECK-NEXT:    [[TMP7:%.*]] = icmp eq ptr [[TMP3]], [[TMP6]]61; CHECK-NEXT:    br i1 [[TMP7]], label %[[BB21:.*]], label %[[BB8:.*]]62; CHECK:       [[BB8]]:63; CHECK-NEXT:    br label %[[BB11:.*]]64; CHECK:       [[BB9:.*]]:65; CHECK-NEXT:    [[TMP10:%.*]] = icmp eq ptr [[TMP18:%.*]], [[TMP6]]66; CHECK-NEXT:    br i1 [[TMP10]], label %[[BB19:.*]], label %[[BB11]]67; CHECK:       [[BB11]]:68; CHECK-NEXT:    [[TMP12:%.*]] = phi ptr [ [[TMP17:%.*]], %[[BB9]] ], [ undef, %[[BB8]] ]69; CHECK-NEXT:    [[TMP13:%.*]] = phi ptr [ [[TMP18]], %[[BB9]] ], [ [[TMP3]], %[[BB8]] ]70; CHECK-NEXT:    [[TMP15:%.*]] = load ptr, ptr [[TMP13]], align 8, !tbaa [[ANYPTR_TBAA8:![0-9]+]]71; CHECK-NEXT:    [[TMP16:%.*]] = icmp eq ptr [[TMP15]], [[ARG1]]72; CHECK-NEXT:    [[TMP17]] = select i1 [[TMP16]], ptr [[TMP13]], ptr [[TMP12]]73; CHECK-NEXT:    [[TMP18]] = getelementptr inbounds [[STRUCT_FOO:%.*]], ptr [[TMP13]], i64 174; CHECK-NEXT:    br i1 [[TMP16]], label %[[BB19]], label %[[BB9]]75; CHECK:       [[BB19]]:76; CHECK-NEXT:    [[TMP20:%.*]] = phi ptr [ null, %[[BB9]] ], [ [[TMP17]], %[[BB11]] ]77; CHECK-NEXT:    br label %[[BB21]]78; CHECK:       [[BB21]]:79; CHECK-NEXT:    [[TMP22:%.*]] = phi ptr [ null, %[[BB]] ], [ [[TMP20]], %[[BB19]] ]80; CHECK-NEXT:    ret ptr [[TMP22]]81;82bb:83  %tmp = getelementptr inbounds %struct.barney, ptr %arg, i64 0, i32 3, i32 0, i32 0, i32 084  %tmp3 = load ptr, ptr %tmp, align 8, !tbaa !285  %tmp4 = getelementptr inbounds %struct.barney, ptr %arg, i64 0, i32 3, i32 0, i32 0, i32 0, i32 0, i32 186  %tmp6 = load ptr, ptr %tmp4, align 8, !tbaa !787  %tmp7 = icmp eq ptr %tmp3, %tmp688  br i1 %tmp7, label %bb21, label %bb889 90bb8:                                              ; preds = %bb91  br label %bb1192 93bb9:                                              ; preds = %bb1194  %tmp10 = icmp eq ptr %tmp18, %tmp695  br i1 %tmp10, label %bb19, label %bb1196 97bb11:                                             ; preds = %bb9, %bb898  %tmp12 = phi ptr [ %tmp17, %bb9 ], [ undef, %bb8 ]99  %tmp13 = phi ptr [ %tmp18, %bb9 ], [ %tmp3, %bb8 ]100  %tmp15 = load ptr, ptr %tmp13, align 8, !tbaa !8101  %tmp16 = icmp eq ptr %tmp15, %arg1102  %tmp17 = select i1 %tmp16, ptr %tmp13, ptr %tmp12103  %tmp18 = getelementptr inbounds %struct.foo, ptr %tmp13, i64 1104  br i1 %tmp16, label %bb19, label %bb9105 106bb19:                                             ; preds = %bb11, %bb9107  %tmp20 = phi ptr [ null, %bb9 ], [ %tmp17, %bb11 ]108  br label %bb21109 110bb21:                                             ; preds = %bb19, %bb111  %tmp22 = phi ptr [ null, %bb ], [ %tmp20, %bb19 ]112  ret ptr %tmp22113}114 115!llvm.module.flags = !{!0}116!llvm.ident = !{!1}117 118!0 = !{i32 1, !"PIC Level", i32 2}119!1 = !{!"clang version 4.0.0"}120!2 = !{!3, !4, i64 0}121!3 = !{!"_ZTSN4llvm15SmallVectorBaseE", !4, i64 0, !4, i64 8, !4, i64 16}122!4 = !{!"any pointer", !5, i64 0}123!5 = !{!"omnipotent char", !6, i64 0}124!6 = !{!"Simple C++ TBAA"}125!7 = !{!3, !4, i64 8}126!8 = !{!9, !4, i64 0}127!9 = !{!"_ZTSN4llvm9RecordValE", !4, i64 0, !10, i64 8, !4, i64 16}128!10 = !{!"_ZTSN4llvm14PointerIntPairIPNS_5RecTyELj1EbNS_21PointerLikeTypeTraitsIS2_EENS_18PointerIntPairInfoIS2_Lj1ES4_EEEE", !11, i64 0}129!11 = !{!"long", !5, i64 0}130;.131; CHECK: [[ANYPTR_TBAA2]] = !{[[META3:![0-9]+]], [[META4:![0-9]+]], i64 0}132; CHECK: [[META3]] = !{!"_ZTSN4llvm15SmallVectorBaseE", [[META4]], i64 0, [[META4]], i64 8, [[META4]], i64 16}133; CHECK: [[META4]] = !{!"any pointer", [[META5:![0-9]+]], i64 0}134; CHECK: [[META5]] = !{!"omnipotent char", [[META6:![0-9]+]], i64 0}135; CHECK: [[META6]] = !{!"Simple C++ TBAA"}136; CHECK: [[ANYPTR_TBAA7]] = !{[[META3]], [[META4]], i64 8}137; CHECK: [[ANYPTR_TBAA8]] = !{[[META9:![0-9]+]], [[META4]], i64 0}138; CHECK: [[META9]] = !{!"_ZTSN4llvm9RecordValE", [[META4]], i64 0, [[META10:![0-9]+]], i64 8, [[META4]], i64 16}139; CHECK: [[META10]] = !{!"_ZTSN4llvm14PointerIntPairIPNS_5RecTyELj1EbNS_21PointerLikeTypeTraitsIS2_EENS_18PointerIntPairInfoIS2_Lj1ES4_EEEE", [[META11:![0-9]+]], i64 0}140; CHECK: [[META11]] = !{!"long", [[META5]], i64 0}141;.142