48 lines · plain
1; RUN: llc -O0 -mtriple=x86_64-linux -asm-verbose=false -verify-machineinstrs < %s | FileCheck %s2; RUN: llc -O0 -mtriple=x86_64-windows-itanium -asm-verbose=false -verify-machineinstrs < %s | FileCheck %s3 4; Fast-isel mustn't add a block to the MBB successor/predecessor list twice.5; The machine verifier will catch and complain about this case.6; CHECK-LABEL: baz7; CHECK: retq8define void @baz(i1 %arg) {9entry:10 br i1 %arg, label %exit, label %exit11 12exit:13 ret void14}15 16; rdar://833710817 18; Fast-isel shouldn't try to look through the compare because it's in a19; different basic block, so its operands aren't necessarily exported20; for cross-block usage.21 22; CHECK: movb %al, [[OFS:[0-9]*]](%rsp)23; CHECK: callq {{_?}}bar24; CHECK: movb [[OFS]](%rsp), %al25 26declare void @bar()27 28define void @foo(i32 %a, i32 %b) nounwind personality ptr @__gxx_personality_v0 {29entry:30 %q = add i32 %a, 731 %r = add i32 %b, 932 %t = icmp ult i32 %q, %r33 invoke void @bar() to label %next unwind label %unw34next:35 br i1 %t, label %true, label %return36true:37 call void @bar()38 br label %return39return:40 ret void41unw:42 %exn = landingpad {ptr, i32}43 cleanup44 unreachable45}46 47declare i32 @__gxx_personality_v0(...)48