brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.7 KiB · 94ab479 Raw
441 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -S -passes=jump-threading < %s | FileCheck %s3 4%struct.ham = type { i8, i8, i16, i32 }5%struct.zot = type { ptr }6%struct.quux.0 = type { %struct.wombat }7%struct.wombat = type { %struct.zot }8 9@global = external global ptr, align 810@global.1 = external constant ptr11 12declare i32 @wombat.2()13 14define void @blam() {15; CHECK-LABEL: @blam(16; CHECK-NEXT:  bb:17; CHECK-NEXT:    [[TMP:%.*]] = load i32, ptr undef, align 418; CHECK-NEXT:    [[TMP1:%.*]] = icmp eq i32 [[TMP]], 019; CHECK-NEXT:    br i1 [[TMP1]], label [[BB11:%.*]], label [[BB2:%.*]]20; CHECK:       bb2:21; CHECK-NEXT:    [[TMP3:%.*]] = tail call i32 @wombat.2()22; CHECK-NEXT:    switch i32 [[TMP3]], label [[BB10:%.*]] [23; CHECK-NEXT:      i32 0, label [[BB7:%.*]]24; CHECK-NEXT:      i32 1, label [[BB10]]25; CHECK-NEXT:      i32 2, label [[BB10]]26; CHECK-NEXT:      i32 3, label [[BB11]]27; CHECK-NEXT:    ]28; CHECK:       bb7:29; CHECK-NEXT:    [[TMP6:%.*]] = tail call i32 @wombat.2()30; CHECK-NEXT:    br label [[BB11]]31; CHECK:       bb10:32; CHECK-NEXT:    ret void33; CHECK:       bb11:34; CHECK-NEXT:    ret void35;36bb:37  %tmp = load i32, ptr undef38  %tmp1 = icmp eq i32 %tmp, 039  br i1 %tmp1, label %bb11, label %bb240 41bb2:42  %tmp3 = tail call i32 @wombat.2()43  switch i32 %tmp3, label %bb4 [44  i32 0, label %bb545  i32 1, label %bb746  i32 2, label %bb747  i32 3, label %bb1148  ]49 50bb4:51  br label %bb752 53bb5:54  %tmp6 = tail call i32 @wombat.2()55  br label %bb756 57bb7:58  %tmp8 = phi i32 [ 0, %bb5 ], [ 1, %bb4 ], [ 2, %bb2 ], [ 2, %bb2 ]59  %tmp9 = icmp eq i32 %tmp8, 060  br i1 %tmp9, label %bb11, label %bb1061 62bb10:63  ret void64 65bb11:66  ret void67}68 69define void @spam(ptr %arg, i1 %arg2) {70; CHECK-LABEL: @spam(71; CHECK-NEXT:  bb:72; CHECK-NEXT:    [[TMP:%.*]] = load i8, ptr undef, align 873; CHECK-NEXT:    switch i8 [[TMP]], label [[BB11:%.*]] [74; CHECK-NEXT:      i8 1, label [[BB11]]75; CHECK-NEXT:      i8 2, label [[BB11]]76; CHECK-NEXT:      i8 3, label [[BB1:%.*]]77; CHECK-NEXT:      i8 4, label [[BB1]]78; CHECK-NEXT:    ]79; CHECK:       bb1:80; CHECK-NEXT:    br label [[BB2:%.*]]81; CHECK:       bb2:82; CHECK-NEXT:    [[TMP3:%.*]] = phi i32 [ 0, [[BB1]] ], [ [[TMP3]], [[BB8:%.*]] ]83; CHECK-NEXT:    br label [[BB4:%.*]]84; CHECK:       bb4:85; CHECK-NEXT:    [[TMP5:%.*]] = load i8, ptr undef, align 886; CHECK-NEXT:    switch i8 [[TMP5]], label [[BB11]] [87; CHECK-NEXT:      i8 0, label [[BB11]]88; CHECK-NEXT:      i8 1, label [[BB10:%.*]]89; CHECK-NEXT:      i8 2, label [[BB10]]90; CHECK-NEXT:      i8 3, label [[BB7:%.*]]91; CHECK-NEXT:      i8 4, label [[BB7]]92; CHECK-NEXT:    ]93; CHECK:       bb7:94; CHECK-NEXT:    br i1 [[ARG2:%.*]], label [[BB8]], label [[BB10]]95; CHECK:       bb8:96; CHECK-NEXT:    [[TMP9:%.*]] = icmp eq ptr undef, [[ARG:%.*]]97; CHECK-NEXT:    br i1 [[TMP9]], label [[BB10]], label [[BB2]]98; CHECK:       bb10:99; CHECK-NEXT:    switch i32 [[TMP3]], label [[BB4]] [100; CHECK-NEXT:      i32 0, label [[BB16:%.*]]101; CHECK-NEXT:      i32 1, label [[BB11]]102; CHECK-NEXT:      i32 2, label [[BB12:%.*]]103; CHECK-NEXT:    ]104; CHECK:       bb11:105; CHECK-NEXT:    unreachable106; CHECK:       bb12:107; CHECK-NEXT:    [[TMP13:%.*]] = load ptr, ptr undef, align 8108; CHECK-NEXT:    br label [[BB16]]109; CHECK:       bb16:110; CHECK-NEXT:    [[TMP15:%.*]] = phi ptr [ [[TMP13]], [[BB12]] ], [ null, [[BB10]] ]111; CHECK-NEXT:    [[TMP17:%.*]] = load i8, ptr undef, align 8112; CHECK-NEXT:    switch i8 [[TMP17]], label [[BB11]] [113; CHECK-NEXT:      i8 0, label [[BB11]]114; CHECK-NEXT:      i8 11, label [[BB23:%.*]]115; CHECK-NEXT:      i8 12, label [[BB23]]116; CHECK-NEXT:    ]117; CHECK:       bb23:118; CHECK-NEXT:    [[TMP21:%.*]] = load ptr, ptr undef, align 8119; CHECK-NEXT:    [[TMP24:%.*]] = icmp eq ptr [[TMP21]], null120; CHECK-NEXT:    br i1 [[TMP24]], label [[BB37:%.*]], label [[BB25:%.*]]121; CHECK:       bb25:122; CHECK-NEXT:    [[TMP26:%.*]] = icmp eq ptr [[TMP15]], null123; CHECK-NEXT:    br i1 [[TMP26]], label [[BB41_THREAD:%.*]], label [[BB27:%.*]]124; CHECK:       bb27:125; CHECK-NEXT:    [[TMP28:%.*]] = load ptr, ptr undef, align 8126; CHECK-NEXT:    [[TMP29:%.*]] = icmp eq ptr [[TMP28]], [[TMP21]]127; CHECK-NEXT:    br i1 [[TMP29]], label [[BB41_THREAD]], label [[BB30:%.*]]128; CHECK:       bb30:129; CHECK-NEXT:    [[TMP32_PR:%.*]] = load i8, ptr undef, align 8130; CHECK-NEXT:    br label [[BB31:%.*]]131; CHECK:       bb31:132; CHECK-NEXT:    [[TMP32:%.*]] = phi i8 [ [[TMP32]], [[BB31]] ], [ [[TMP32_PR]], [[BB30]] ]133; CHECK-NEXT:    [[TMP33:%.*]] = icmp eq i8 [[TMP32]], 0134; CHECK-NEXT:    br i1 [[TMP33]], label [[BB31]], label [[BB41_THREAD]]135; CHECK:       bb37:136; CHECK-NEXT:    [[TMP36:%.*]] = phi i1 [ false, [[BB23]] ]137; CHECK-NEXT:    [[TMP38:%.*]] = icmp eq ptr [[TMP15]], null138; CHECK-NEXT:    br i1 [[TMP38]], label [[BB41:%.*]], label [[BB41_THREAD]]139; CHECK:       bb41:140; CHECK-NEXT:    [[TMP40:%.*]] = load ptr, ptr @global, align 8141; CHECK-NEXT:    br label [[BB41_THREAD]]142; CHECK:       bb41.thread11:143; CHECK-NEXT:    [[TMP0:%.*]] = phi ptr [ undef, [[BB41]] ], [ undef, [[BB25]] ], [ undef, [[BB31]] ], [ undef, [[BB27]] ], [ undef, [[BB37]] ]144; CHECK-NEXT:    ret void145;146bb:147  %tmp = load i8, ptr undef, align 8148  switch i8 %tmp, label %bb11 [149  i8 1, label %bb11150  i8 2, label %bb11151  i8 3, label %bb1152  i8 4, label %bb1153  ]154 155bb1:156  br label %bb2157 158bb2:159  %tmp3 = phi i32 [ 0, %bb1 ], [ %tmp3, %bb8 ]160  br label %bb4161 162bb4:163  %tmp5 = load i8, ptr undef, align 8164  switch i8 %tmp5, label %bb11 [165  i8 0, label %bb11166  i8 1, label %bb10167  i8 2, label %bb10168  i8 3, label %bb6169  i8 4, label %bb6170  ]171 172bb6:173  br label %bb7174 175bb7:176  br i1 %arg2, label %bb8, label %bb10177 178bb8:179  %tmp9 = icmp eq ptr undef, %arg180  br i1 %tmp9, label %bb10, label %bb2181 182bb10:183  switch i32 %tmp3, label %bb4 [184  i32 0, label %bb14185  i32 1, label %bb11186  i32 2, label %bb12187  ]188 189bb11:190  unreachable191 192bb12:193  %tmp13 = load ptr, ptr undef194  br label %bb14195 196bb14:197  %tmp15 = phi ptr [ %tmp13, %bb12 ], [ null, %bb10 ]198  br label %bb16199 200bb16:201  %tmp17 = load i8, ptr undef, align 8202  switch i8 %tmp17, label %bb11 [203  i8 0, label %bb11204  i8 11, label %bb18205  i8 12, label %bb18206  ]207 208bb18:209  br label %bb19210 211bb19:212  br label %bb20213 214bb20:215  %tmp21 = load ptr, ptr undef216  switch i8 undef, label %bb22 [217  i8 0, label %bb4218  i8 11, label %bb10219  i8 12, label %bb10220  ]221 222bb22:223  br label %bb23224 225bb23:226  %tmp24 = icmp eq ptr %tmp21, null227  br i1 %tmp24, label %bb35, label %bb25228 229bb25:230  %tmp26 = icmp eq ptr %tmp15, null231  br i1 %tmp26, label %bb34, label %bb27232 233bb27:234  %tmp28 = load ptr, ptr undef235  %tmp29 = icmp eq ptr %tmp28, %tmp21236  br i1 %tmp29, label %bb35, label %bb30237 238bb30:239  br label %bb31240 241bb31:242  %tmp32 = load i8, ptr undef, align 8243  %tmp33 = icmp eq i8 %tmp32, 0244  br i1 %tmp33, label %bb31, label %bb34245 246bb34:247  br label %bb35248 249bb35:250  %tmp36 = phi i1 [ true, %bb34 ], [ false, %bb23 ], [ true, %bb27 ]251  br label %bb37252 253bb37:254  %tmp38 = icmp eq ptr %tmp15, null255  br i1 %tmp38, label %bb39, label %bb41256 257bb39:258  %tmp40 = load ptr, ptr @global259  br label %bb41260 261bb41:262  %tmp42 = select i1 %tmp36, ptr undef, ptr undef263  ret void264}265 266declare i32 @foo(...)267 268define void @zot() align 2 personality ptr @foo {269; CHECK-LABEL: @zot(270; CHECK-NEXT:  bb:271; CHECK-NEXT:    invoke void @bar()272; CHECK-NEXT:            to label [[BB1:%.*]] unwind label [[BB3:%.*]]273; CHECK:       bb1:274; CHECK-NEXT:    invoke void @bar()275; CHECK-NEXT:            to label [[BB2:%.*]] unwind label [[BB4:%.*]]276; CHECK:       bb2:277; CHECK-NEXT:    invoke void @bar()278; CHECK-NEXT:            to label [[BB6:%.*]] unwind label [[BB17:%.*]]279; CHECK:       bb3:280; CHECK-NEXT:    [[TMP:%.*]] = landingpad { ptr, i32 }281; CHECK-NEXT:            catch ptr @global.1282; CHECK-NEXT:            catch ptr null283; CHECK-NEXT:    unreachable284; CHECK:       bb4:285; CHECK-NEXT:    [[TMP5:%.*]] = landingpad { ptr, i32 }286; CHECK-NEXT:            catch ptr @global.1287; CHECK-NEXT:            catch ptr null288; CHECK-NEXT:    unreachable289; CHECK:       bb6:290; CHECK-NEXT:    invoke void @bar()291; CHECK-NEXT:            to label [[BB7:%.*]] unwind label [[BB19:%.*]]292; CHECK:       bb7:293; CHECK-NEXT:    invoke void @bar()294; CHECK-NEXT:            to label [[BB10:%.*]] unwind label [[BB8:%.*]]295; CHECK:       bb8:296; CHECK-NEXT:    [[TMP9:%.*]] = landingpad { ptr, i32 }297; CHECK-NEXT:            cleanup298; CHECK-NEXT:            catch ptr @global.1299; CHECK-NEXT:            catch ptr null300; CHECK-NEXT:    unreachable301; CHECK:       bb10:302; CHECK-NEXT:    [[TMP11:%.*]] = load ptr, ptr undef, align 8303; CHECK-NEXT:    [[TMP12:%.*]] = invoke i32 [[TMP11]](ptr nonnull undef)304; CHECK-NEXT:            to label [[BB13:%.*]] unwind label [[BB21:%.*]]305; CHECK:       bb13:306; CHECK-NEXT:    invoke void @bar()307; CHECK-NEXT:            to label [[BB14:%.*]] unwind label [[BB30:%.*]]308; CHECK:       bb14:309; CHECK-NEXT:    [[TMP15:%.*]] = load ptr, ptr undef, align 8310; CHECK-NEXT:    [[TMP16:%.*]] = invoke i32 [[TMP15]](ptr nonnull undef)311; CHECK-NEXT:            to label [[BB26:%.*]] unwind label [[BB30_THREAD:%.*]]312; CHECK:       bb17:313; CHECK-NEXT:    [[TMP18:%.*]] = landingpad { ptr, i32 }314; CHECK-NEXT:            catch ptr @global.1315; CHECK-NEXT:            catch ptr null316; CHECK-NEXT:    unreachable317; CHECK:       bb19:318; CHECK-NEXT:    [[TMP20:%.*]] = landingpad { ptr, i32 }319; CHECK-NEXT:            catch ptr @global.1320; CHECK-NEXT:            catch ptr null321; CHECK-NEXT:    unreachable322; CHECK:       bb21:323; CHECK-NEXT:    [[TMP22:%.*]] = landingpad { ptr, i32 }324; CHECK-NEXT:            catch ptr @global.1325; CHECK-NEXT:            catch ptr null326; CHECK-NEXT:    unreachable327; CHECK:       bb26:328; CHECK-NEXT:    [[TMP27:%.*]] = load ptr, ptr undef, align 8329; CHECK-NEXT:    [[TMP28:%.*]] = invoke i32 [[TMP27]](ptr nonnull undef)330; CHECK-NEXT:            to label [[BB29:%.*]] unwind label [[BB30_THREAD]]331; CHECK:       bb29:332; CHECK-NEXT:    unreachable333; CHECK:       bb30.thread:334; CHECK-NEXT:    [[LPAD_THR_COMM:%.*]] = landingpad { ptr, i32 }335; CHECK-NEXT:            catch ptr @global.1336; CHECK-NEXT:            catch ptr null337; CHECK-NEXT:    br label [[BB32:%.*]]338; CHECK:       bb30:339; CHECK-NEXT:    [[LPAD_THR_COMM_SPLIT_LP:%.*]] = landingpad { ptr, i32 }340; CHECK-NEXT:            catch ptr @global.1341; CHECK-NEXT:            catch ptr null342; CHECK-NEXT:    br label [[BB32]]343; CHECK:       bb32:344; CHECK-NEXT:    unreachable345;346bb:347  invoke void @bar()348  to label %bb1 unwind label %bb3349 350bb1:351  invoke void @bar()352  to label %bb2 unwind label %bb4353 354bb2:355  invoke void @bar()356  to label %bb6 unwind label %bb17357 358bb3:359  %tmp = landingpad { ptr, i32 }360  catch ptr @global.1361  catch ptr null362  unreachable363 364bb4:365  %tmp5 = landingpad { ptr, i32 }366  catch ptr @global.1367  catch ptr null368  unreachable369 370bb6:371  invoke void @bar()372  to label %bb7 unwind label %bb19373 374bb7:375  invoke void @bar()376  to label %bb10 unwind label %bb8377 378bb8:379  %tmp9 = landingpad { ptr, i32 }380  cleanup381  catch ptr @global.1382  catch ptr null383  unreachable384 385bb10:386  %tmp11 = load ptr, ptr undef, align 8387  %tmp12 = invoke i32 %tmp11(ptr nonnull undef)388  to label %bb13 unwind label %bb21389 390bb13:391  invoke void @bar()392  to label %bb14 unwind label %bb23393 394bb14:395  %tmp15 = load ptr, ptr undef, align 8396  %tmp16 = invoke i32 %tmp15(ptr nonnull undef)397  to label %bb26 unwind label %bb23398 399bb17:400  %tmp18 = landingpad { ptr, i32 }401  catch ptr @global.1402  catch ptr null403  unreachable404 405bb19:406  %tmp20 = landingpad { ptr, i32 }407  catch ptr @global.1408  catch ptr null409  unreachable410 411bb21:412  %tmp22 = landingpad { ptr, i32 }413  catch ptr @global.1414  catch ptr null415  unreachable416 417bb23:418  %tmp24 = phi ptr [ null, %bb26 ], [ null, %bb14 ], [ undef, %bb13 ]419  %tmp25 = landingpad { ptr, i32 }420  catch ptr @global.1421  catch ptr null422  br label %bb30423 424bb26:425  %tmp27 = load ptr, ptr undef, align 8426  %tmp28 = invoke i32 %tmp27(ptr nonnull undef)427  to label %bb29 unwind label %bb23428 429bb29:430  unreachable431 432bb30:433  %tmp31 = icmp eq ptr %tmp24, null434  br i1 %tmp31, label %bb32, label %bb29435 436bb32:437  unreachable438}439 440declare void @bar()441