brintos

brintos / llvm-project-archived public Read only

0
0
Text · 12.5 KiB · 9c193cc Raw
329 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -S -passes=jump-threading < %s | FileCheck %s3 4%class.E = type { ptr, %class.C }5%class.C = type { %class.A }6%class.A = type { i32 }7%class.D = type { %class.F }8%class.F = type { %class.E }9%class.B = type { ptr }10 11@_ZTV1D = unnamed_addr constant [3 x ptr] [ptr null, ptr @_ZTI1D, ptr @_ZN1D7doApplyEv]12@_ZTI1D = external unnamed_addr constant { ptr, ptr, ptr }13 14define void @_ZN15EditCommandImpl5applyEv(ptr %this) uwtable align 2 {15; CHECK-LABEL: @_ZN15EditCommandImpl5applyEv(16; CHECK-NEXT:  entry:17; CHECK-NEXT:    [[VTABLE:%.*]] = load ptr, ptr [[THIS:%.*]], align 818; CHECK-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[VTABLE]], align 819; CHECK-NEXT:    call void [[TMP0]](ptr [[THIS]])20; CHECK-NEXT:    ret void21;22entry:23  %vtable = load ptr, ptr %this, align 824  %0 = load ptr, ptr %vtable, align 825  call void %0(ptr %this)26  ret void27}28 29define void @_ZN1DC1Ev(ptr nocapture %this) unnamed_addr uwtable align 2 {30; CHECK-LABEL: @_ZN1DC1Ev(31; CHECK-NEXT:  entry:32; CHECK-NEXT:    call void @_ZN24CompositeEditCommandImplC2Ev()33; CHECK-NEXT:    store ptr getelementptr inbounds ([3 x ptr], ptr @_ZTV1D, i64 0, i64 2), ptr [[THIS:%.*]], align 834; CHECK-NEXT:    ret void35;36entry:37  call void @_ZN24CompositeEditCommandImplC2Ev()38  store ptr getelementptr inbounds ([3 x ptr], ptr @_ZTV1D, i64 0, i64 2), ptr %this, align 839  ret void40}41 42define void @_ZN1DC2Ev(ptr nocapture %this) unnamed_addr uwtable align 2 {43; CHECK-LABEL: @_ZN1DC2Ev(44; CHECK-NEXT:  entry:45; CHECK-NEXT:    call void @_ZN24CompositeEditCommandImplC2Ev()46; CHECK-NEXT:    store ptr getelementptr inbounds ([3 x ptr], ptr @_ZTV1D, i64 0, i64 2), ptr [[THIS:%.*]], align 847; CHECK-NEXT:    ret void48;49entry:50  call void @_ZN24CompositeEditCommandImplC2Ev()51  store ptr getelementptr inbounds ([3 x ptr], ptr @_ZTV1D, i64 0, i64 2), ptr %this, align 852  ret void53}54 55declare void @_ZN24CompositeEditCommandImplC2Ev() #156 57define void @_ZN1D7doApplyEv(ptr nocapture %this) unnamed_addr nounwind readnone uwtable align 2 {58; CHECK-LABEL: @_ZN1D7doApplyEv(59; CHECK-NEXT:  entry:60; CHECK-NEXT:    ret void61;62entry:63  ret void64}65 66define void @_Z3fn1v(i1 %arg) uwtable personality ptr @__gxx_personality_v0 {67; CHECK-LABEL: @_Z3fn1v(68; CHECK-NEXT:  entry:69; CHECK-NEXT:    [[CALL:%.*]] = call noalias ptr @_Znwm()70; CHECK-NEXT:    invoke void @_ZN24CompositeEditCommandImplC2Ev()71; CHECK-NEXT:    to label [[_ZN1DC1EV_EXIT:%.*]] unwind label [[LPAD:%.*]]72; CHECK:       _ZN1DC1Ev.exit:73; CHECK-NEXT:    store ptr getelementptr inbounds ([3 x ptr], ptr @_ZTV1D, i64 0, i64 2), ptr [[CALL]], align 874; CHECK-NEXT:    [[_REF_I_I_I:%.*]] = getelementptr inbounds i8, ptr [[CALL]], i64 875; CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr [[_REF_I_I_I]], align 476; CHECK-NEXT:    [[INC_I_I_I:%.*]] = add nsw i32 [[TMP0]], 177; CHECK-NEXT:    store i32 [[INC_I_I_I]], ptr [[_REF_I_I_I]], align 478; CHECK-NEXT:    invoke void @_ZN1D7doApplyEv(ptr [[CALL]])79; CHECK-NEXT:    to label [[_ZN15EDITCOMMANDIMPL5APPLYEV_EXIT:%.*]] unwind label [[LPAD1:%.*]]80; CHECK:       _ZN15EditCommandImpl5applyEv.exit:81; CHECK-NEXT:    invoke void @_ZN1D16deleteKeyPressedEv()82; CHECK-NEXT:    to label [[INVOKE_CONT7:%.*]] unwind label [[LPAD1]]83; CHECK:       invoke.cont7:84; CHECK-NEXT:    ret void85; CHECK:       lpad:86; CHECK-NEXT:    [[TMP1:%.*]] = landingpad { ptr, i32 }87; CHECK-NEXT:    cleanup88; CHECK-NEXT:    call void @_ZdlPv()89; CHECK-NEXT:    unreachable90; CHECK:       lpad1:91; CHECK-NEXT:    [[TMP2:%.*]] = landingpad { ptr, i32 }92; CHECK-NEXT:    cleanup93; CHECK-NEXT:    [[TMP3:%.*]] = load i32, ptr [[_REF_I_I_I]], align 494; CHECK-NEXT:    [[TOBOOL_I_I_I:%.*]] = icmp eq i32 [[TMP3]], 095; CHECK-NEXT:    br i1 [[TOBOOL_I_I_I]], label [[_ZN1BI1DED1EV_EXIT:%.*]], label [[DELETE_NOTNULL_I_I_I:%.*]]96; CHECK:       if.then.i.i.i:97; CHECK-NEXT:    br i1 [[ARG:%.*]], label [[_ZN1BI1DED1EV_EXIT]], label [[DELETE_NOTNULL_I_I_I1:%.*]]98; CHECK:       delete.notnull.i.i.i:99; CHECK-NEXT:    call void @_ZdlPv()100; CHECK-NEXT:    unreachable101; CHECK:       _ZN1BI1DED1Ev.exit:102; CHECK-NEXT:    resume { ptr, i32 } undef103; CHECK:       terminate.lpad:104; CHECK-NEXT:    [[TMP4:%.*]] = landingpad { ptr, i32 }105; CHECK-NEXT:    catch ptr null106; CHECK-NEXT:    unreachable107;108entry:109  %call = call noalias ptr @_Znwm() #8110  invoke void @_ZN24CompositeEditCommandImplC2Ev()111  to label %_ZN1DC1Ev.exit unwind label %lpad112 113_ZN1DC1Ev.exit:                                   ; preds = %entry114  store ptr getelementptr inbounds ([3 x ptr], ptr @_ZTV1D, i64 0, i64 2), ptr %call, align 8115  %_ref.i.i.i = getelementptr inbounds i8, ptr %call, i64 8116  %0 = load i32, ptr %_ref.i.i.i, align 4117  %inc.i.i.i = add nsw i32 %0, 1118  store i32 %inc.i.i.i, ptr %_ref.i.i.i, align 4119  invoke void @_ZN1D7doApplyEv(ptr %call)120  to label %_ZN15EditCommandImpl5applyEv.exit unwind label %lpad1121 122_ZN15EditCommandImpl5applyEv.exit:                ; preds = %_ZN1DC1Ev.exit123  invoke void @_ZN1D16deleteKeyPressedEv()124  to label %invoke.cont7 unwind label %lpad1125 126invoke.cont7:                                     ; preds = %_ZN15EditCommandImpl5applyEv.exit127  ret void128 129lpad:                                             ; preds = %entry130  %1 = landingpad { ptr, i32 }131  cleanup132  call void @_ZdlPv() #9133  unreachable134 135lpad1:                                            ; preds = %_ZN1DC1Ev.exit, %_ZN15EditCommandImpl5applyEv.exit136  %2 = landingpad { ptr, i32 }137  cleanup138  %3 = load i32, ptr %_ref.i.i.i, align 4139  %tobool.i.i.i = icmp eq i32 %3, 0140  br i1 %tobool.i.i.i, label %_ZN1BI1DED1Ev.exit, label %if.then.i.i.i141 142if.then.i.i.i:                                    ; preds = %lpad1143  br i1 %arg, label %_ZN1BI1DED1Ev.exit, label %delete.notnull.i.i.i144 145delete.notnull.i.i.i:                             ; preds = %if.then.i.i.i146  call void @_ZdlPv() #9147  unreachable148 149_ZN1BI1DED1Ev.exit:                               ; preds = %lpad1, %if.then.i.i.i150  resume { ptr, i32 } undef151 152terminate.lpad:                                   ; No predecessors!153  %4 = landingpad { ptr, i32 }154  catch ptr null155  unreachable156}157 158define void @_ZN1BI1DEC1EPS0_(ptr nocapture %this, ptr %p1) unnamed_addr uwtable align 2 {159; CHECK-LABEL: @_ZN1BI1DEC1EPS0_(160; CHECK-NEXT:  entry:161; CHECK-NEXT:    store ptr [[P1:%.*]], ptr [[THIS:%.*]], align 8162; CHECK-NEXT:    [[_REF_I_I:%.*]] = getelementptr inbounds [[CLASS_D:%.*]], ptr [[P1]], i64 0, i32 0, i32 0, i32 1, i32 0, i32 0163; CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr [[_REF_I_I]], align 4164; CHECK-NEXT:    [[INC_I_I:%.*]] = add nsw i32 [[TMP0]], 1165; CHECK-NEXT:    store i32 [[INC_I_I]], ptr [[_REF_I_I]], align 4166; CHECK-NEXT:    ret void167;168entry:169  store ptr %p1, ptr %this, align 8170  %_ref.i.i = getelementptr inbounds %class.D, ptr %p1, i64 0, i32 0, i32 0, i32 1, i32 0, i32 0171  %0 = load i32, ptr %_ref.i.i, align 4172  %inc.i.i = add nsw i32 %0, 1173  store i32 %inc.i.i, ptr %_ref.i.i, align 4174  ret void175}176 177declare noalias ptr @_Znwm()178 179declare i32 @__gxx_personality_v0(...)180 181declare void @_ZdlPv()182 183define ptr @_ZN1BI1DEptEv(ptr nocapture readonly %this) nounwind readonly uwtable align 2 {184; CHECK-LABEL: @_ZN1BI1DEptEv(185; CHECK-NEXT:  entry:186; CHECK-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[THIS:%.*]], align 8187; CHECK-NEXT:    ret ptr [[TMP0]]188;189entry:190  %0 = load ptr, ptr %this, align 8191  ret ptr %0192}193 194declare void @_ZN1D16deleteKeyPressedEv()195 196define void @_ZN1BI1DED1Ev(ptr nocapture readonly %this, i1 %arg) unnamed_addr uwtable align 2 {197; CHECK-LABEL: @_ZN1BI1DED1Ev(198; CHECK-NEXT:  entry:199; CHECK-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[THIS:%.*]], align 8200; CHECK-NEXT:    [[_REF_I_I:%.*]] = getelementptr inbounds [[CLASS_D:%.*]], ptr [[TMP0]], i64 0, i32 0, i32 0, i32 1, i32 0, i32 0201; CHECK-NEXT:    [[TMP1:%.*]] = load i32, ptr [[_REF_I_I]], align 4202; CHECK-NEXT:    [[TOBOOL_I_I:%.*]] = icmp eq i32 [[TMP1]], 0203; CHECK-NEXT:    br i1 [[TOBOOL_I_I]], label [[_ZN1BI1DED2EV_EXIT:%.*]], label [[DELETE_NOTNULL_I_I:%.*]]204; CHECK:       if.then.i.i:205; CHECK-NEXT:    br i1 [[ARG:%.*]], label [[_ZN1BI1DED2EV_EXIT]], label [[DELETE_NOTNULL_I_I1:%.*]]206; CHECK:       delete.notnull.i.i:207; CHECK-NEXT:    call void @_ZdlPv()208; CHECK-NEXT:    unreachable209; CHECK:       _ZN1BI1DED2Ev.exit:210; CHECK-NEXT:    ret void211;212entry:213  %0 = load ptr, ptr %this, align 8214  %_ref.i.i = getelementptr inbounds %class.D, ptr %0, i64 0, i32 0, i32 0, i32 1, i32 0, i32 0215  %1 = load i32, ptr %_ref.i.i, align 4216  %tobool.i.i = icmp eq i32 %1, 0217  br i1 %tobool.i.i, label %_ZN1BI1DED2Ev.exit, label %if.then.i.i218 219if.then.i.i:                                      ; preds = %entry220  br i1 %arg, label %_ZN1BI1DED2Ev.exit, label %delete.notnull.i.i221 222delete.notnull.i.i:                               ; preds = %if.then.i.i223  call void @_ZdlPv() #9224  unreachable225 226_ZN1BI1DED2Ev.exit:                               ; preds = %entry, %if.then.i.i227  ret void228}229 230declare hidden void @__clang_call_terminate()231 232define void @_ZN1BI1DED2Ev(ptr nocapture readonly %this, i1 %arg) unnamed_addr uwtable align 2 {233; CHECK-LABEL: @_ZN1BI1DED2Ev(234; CHECK-NEXT:  entry:235; CHECK-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[THIS:%.*]], align 8236; CHECK-NEXT:    [[_REF_I:%.*]] = getelementptr inbounds [[CLASS_D:%.*]], ptr [[TMP0]], i64 0, i32 0, i32 0, i32 1, i32 0, i32 0237; CHECK-NEXT:    [[TMP1:%.*]] = load i32, ptr [[_REF_I]], align 4238; CHECK-NEXT:    [[TOBOOL_I:%.*]] = icmp eq i32 [[TMP1]], 0239; CHECK-NEXT:    br i1 [[TOBOOL_I]], label [[_ZN1AI1CE5DEREFEV_EXIT:%.*]], label [[DELETE_NOTNULL_I:%.*]]240; CHECK:       if.then.i:241; CHECK-NEXT:    br i1 [[ARG:%.*]], label [[_ZN1AI1CE5DEREFEV_EXIT]], label [[DELETE_NOTNULL_I1:%.*]]242; CHECK:       delete.notnull.i:243; CHECK-NEXT:    call void @_ZdlPv()244; CHECK-NEXT:    unreachable245; CHECK:       _ZN1AI1CE5derefEv.exit:246; CHECK-NEXT:    ret void247;248entry:249  %0 = load ptr, ptr %this, align 8250  %_ref.i = getelementptr inbounds %class.D, ptr %0, i64 0, i32 0, i32 0, i32 1, i32 0, i32 0251  %1 = load i32, ptr %_ref.i, align 4252  %tobool.i = icmp eq i32 %1, 0253  br i1 %tobool.i, label %_ZN1AI1CE5derefEv.exit, label %if.then.i254 255if.then.i:                                        ; preds = %entry256  br i1 %arg, label %_ZN1AI1CE5derefEv.exit, label %delete.notnull.i257 258delete.notnull.i:                                 ; preds = %if.then.i259  call void @_ZdlPv() #9260  unreachable261 262_ZN1AI1CE5derefEv.exit:                           ; preds = %entry, %if.then.i263  ret void264}265 266define void @_ZN1AI1CE5derefEv(ptr nocapture readonly %this, i1 %arg) nounwind uwtable align 2 {267; CHECK-LABEL: @_ZN1AI1CE5derefEv(268; CHECK-NEXT:  entry:269; CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr [[THIS:%.*]], align 4270; CHECK-NEXT:    [[TOBOOL:%.*]] = icmp eq i32 [[TMP0]], 0271; CHECK-NEXT:    br i1 [[TOBOOL]], label [[IF_END:%.*]], label [[DELETE_NOTNULL:%.*]]272; CHECK:       if.then:273; CHECK-NEXT:    br i1 [[ARG:%.*]], label [[IF_END]], label [[DELETE_NOTNULL1:%.*]]274; CHECK:       delete.notnull:275; CHECK-NEXT:    call void @_ZdlPv()276; CHECK-NEXT:    unreachable277; CHECK:       if.end:278; CHECK-NEXT:    ret void279;280entry:281  %0 = load i32, ptr %this, align 4282  %tobool = icmp eq i32 %0, 0283  br i1 %tobool, label %if.end, label %if.then284 285if.then:                                          ; preds = %entry286  br i1 %arg, label %if.end, label %delete.notnull287 288delete.notnull:                                   ; preds = %if.then289  call void @_ZdlPv() #9290  unreachable291 292if.end:                                           ; preds = %entry, %if.then293  ret void294}295 296define void @_ZN1BI1DEC2EPS0_(ptr nocapture %this, ptr %p1) unnamed_addr uwtable align 2 {297; CHECK-LABEL: @_ZN1BI1DEC2EPS0_(298; CHECK-NEXT:  entry:299; CHECK-NEXT:    store ptr [[P1:%.*]], ptr [[THIS:%.*]], align 8300; CHECK-NEXT:    [[_REF_I:%.*]] = getelementptr inbounds [[CLASS_D:%.*]], ptr [[P1]], i64 0, i32 0, i32 0, i32 1, i32 0, i32 0301; CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr [[_REF_I]], align 4302; CHECK-NEXT:    [[INC_I:%.*]] = add nsw i32 [[TMP0]], 1303; CHECK-NEXT:    store i32 [[INC_I]], ptr [[_REF_I]], align 4304; CHECK-NEXT:    ret void305;306entry:307  store ptr %p1, ptr %this, align 8308  %_ref.i = getelementptr inbounds %class.D, ptr %p1, i64 0, i32 0, i32 0, i32 1, i32 0, i32 0309  %0 = load i32, ptr %_ref.i, align 4310  %inc.i = add nsw i32 %0, 1311  store i32 %inc.i, ptr %_ref.i, align 4312  ret void313}314 315define void @_ZN1AI1CE3refEv(ptr nocapture %this) nounwind uwtable align 2 {316; CHECK-LABEL: @_ZN1AI1CE3refEv(317; CHECK-NEXT:  entry:318; CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr [[THIS:%.*]], align 4319; CHECK-NEXT:    [[INC:%.*]] = add nsw i32 [[TMP0]], 1320; CHECK-NEXT:    store i32 [[INC]], ptr [[THIS]], align 4321; CHECK-NEXT:    ret void322;323entry:324  %0 = load i32, ptr %this, align 4325  %inc = add nsw i32 %0, 1326  store i32 %inc, ptr %this, align 4327  ret void328}329