From: Dylan McKay Date: Mon, 21 Jan 2019 02:46:13 +0000 (+0000) Subject: Revert "[AVR] Insert unconditional branch when inserting MBBs between blocks with... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=08d4d2befa8690fae09cdb4358745add7694ca63;p=llvm Revert "[AVR] Insert unconditional branch when inserting MBBs between blocks with fallthrough" This reverts commit r351718. Carl pointed out that the unit test could be improved. This patch will be recommitted once the test is made more resilient. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351719 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/AVR/AVRISelLowering.cpp b/lib/Target/AVR/AVRISelLowering.cpp index e95a41472bf..3116eb2a503 100644 --- a/lib/Target/AVR/AVRISelLowering.cpp +++ b/lib/Target/AVR/AVRISelLowering.cpp @@ -1634,15 +1634,6 @@ AVRTargetLowering::EmitInstrWithCustomInserter(MachineInstr &MI, MachineFunction *MF = MBB->getParent(); const BasicBlock *LLVM_BB = MBB->getBasicBlock(); - MachineBasicBlock *FallThrough = MBB->getFallThrough(); - - // If the current basic block falls through to another basic block, - // we must insert an unconditional branch to the fallthrough destination - // if we are to insert basic blocks at the prior fallthrough point. - if (FallThrough != nullptr) { - BuildMI(MBB, dl, TII.get(AVR::RJMPk)).addMBB(FallThrough); - } - MachineBasicBlock *trueMBB = MF->CreateMachineBasicBlock(LLVM_BB); MachineBasicBlock *falseMBB = MF->CreateMachineBasicBlock(LLVM_BB); diff --git a/test/CodeGen/AVR/avr-rust-issue-123.ll b/test/CodeGen/AVR/avr-rust-issue-123.ll deleted file mode 100644 index 19e3f9a13fb..00000000000 --- a/test/CodeGen/AVR/avr-rust-issue-123.ll +++ /dev/null @@ -1,65 +0,0 @@ -; RUN: llc -O1 < %s -march=avr | FileCheck %s - -; This test ensures that the Select8/Select16 expansion -; pass inserts an unconditional branch to the previous adjacent -; basic block when inserting new basic blocks when the -; prior block has a fallthrough. -; -; Before this bug was fixed, Select8/Select16 expansion -; would leave a dangling fallthrough to an undefined block. -; -; The BranchFolding pass would later rearrange the basic -; blocks based on predecessor/successor list assumptions -; which were made incorrect due to the invalid Select -; expansion. - -; More information in -; https://github.com/avr-rust/rust/issues/123. - -%UInt8 = type <{ i8 }> -%UInt32 = type <{ i32 }> -%Sb = type <{ i1 }> - -@delayFactor = hidden global %UInt8 zeroinitializer, align 1 -@delay = hidden global %UInt32 zeroinitializer, align 4 -@flag = hidden global %Sb zeroinitializer, align 1 - -declare void @eeprom_write(i16, i8) - -define hidden void @update_register(i8 %arg, i8 %arg1) { -entry: - switch i8 %arg, label %bb7 [ - i8 6, label %bb - i8 7, label %bb6 - ] - -bb: ; preds = %entry - %tmp = icmp ugt i8 %arg1, 90 - %tmp2 = icmp ult i8 %arg1, 5 - %. = select i1 %tmp2, i8 5, i8 %arg1 - %tmp3 = select i1 %tmp, i8 90, i8 %. - store i8 %tmp3, i8* getelementptr inbounds (%UInt8, %UInt8* @delayFactor, i64 0, i32 0), align 1 - %tmp4 = zext i8 %tmp3 to i32 - %tmp5 = mul nuw nsw i32 %tmp4, 100 - store i32 %tmp5, i32* getelementptr inbounds (%UInt32, %UInt32* @delay, i64 0, i32 0), align 4 - tail call void @eeprom_write(i16 34, i8 %tmp3) - br label %bb7 - -bb6: ; preds = %entry - %not. = icmp ne i8 %arg1, 0 - %.2 = zext i1 %not. to i8 - store i1 %not., i1* getelementptr inbounds (%Sb, %Sb* @flag, i64 0, i32 0), align 1 - - ; CHECK: LBB0_{{[0-9]+}}: - ; CHECK: call eeprom_write - ; CHECK-NEXT: LBB0_{{[0-9]+}} - ; CHECK-NEXT: pop r{{[0-9]+}} - ; CHECK-NEXT: ret - - tail call void @eeprom_write(i16 35, i8 %.2) - br label %bb7 - -bb7: ; preds = %bb6, %bb, %entry - ret void -} -