From 138d5bf371fd69644ab781220f45d4308d3fc83d Mon Sep 17 00:00:00 2001 From: Hal Finkel Date: Fri, 5 Dec 2014 02:07:35 +0000 Subject: [PATCH] Revert "r223440 - Consider subregs when calling MI::registerDefIsDead for phys deps" Reverting this because, while it fixes the problem in the reduced test case, it does not fix the problem in the full test case from the bug report. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@223442 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/ScheduleDAGInstrs.cpp | 8 +- test/CodeGen/PowerPC/subreg-postra.ll | 168 -------------------------- 2 files changed, 1 insertion(+), 175 deletions(-) delete mode 100644 test/CodeGen/PowerPC/subreg-postra.ll diff --git a/lib/CodeGen/ScheduleDAGInstrs.cpp b/lib/CodeGen/ScheduleDAGInstrs.cpp index ec376e8e7bb..d8d8422f0ed 100644 --- a/lib/CodeGen/ScheduleDAGInstrs.cpp +++ b/lib/CodeGen/ScheduleDAGInstrs.cpp @@ -310,15 +310,9 @@ void ScheduleDAGInstrs::addPhysRegDeps(SUnit *SU, unsigned OperIdx) { SUnit *DefSU = I->SU; if (DefSU == &ExitSU) continue; - auto IsDefDead = [this](SUnit *DefSU, unsigned Reg) { - for (MCSubRegIterator SR(Reg, TRI, true); SR.isValid(); ++SR) - if (!DefSU->getInstr()->registerDefIsDead(*SR)) - return false; - return true; - }; if (DefSU != SU && (Kind != SDep::Output || !MO.isDead() || - !IsDefDead(DefSU, *Alias))) { + !DefSU->getInstr()->registerDefIsDead(*Alias))) { if (Kind == SDep::Anti) DefSU->addPred(SDep(SU, Kind, /*Reg=*/*Alias)); else { diff --git a/test/CodeGen/PowerPC/subreg-postra.ll b/test/CodeGen/PowerPC/subreg-postra.ll deleted file mode 100644 index 25e23b757e7..00000000000 --- a/test/CodeGen/PowerPC/subreg-postra.ll +++ /dev/null @@ -1,168 +0,0 @@ -; RUN: llc -mcpu=pwr7 < %s | FileCheck %s -target datalayout = "E-m:e-i64:64-n32:64" -target triple = "powerpc64-unknown-linux-gnu" - -; Function Attrs: nounwind -define void @jbd2_journal_commit_transaction(i32* %journal) #0 { -entry: - br i1 undef, label %do.body, label %if.then5 - -if.then5: ; preds = %entry - unreachable - -do.body: ; preds = %entry - br i1 undef, label %do.body.i, label %trace_jbd2_start_commit.exit - -do.body.i: ; preds = %do.body - unreachable - -trace_jbd2_start_commit.exit: ; preds = %do.body - br i1 undef, label %do.body.i1116, label %trace_jbd2_commit_locking.exit - -do.body.i1116: ; preds = %trace_jbd2_start_commit.exit - br i1 undef, label %if.end.i1123, label %do.body5.i1122 - -do.body5.i1122: ; preds = %do.body.i1116 - unreachable - -if.end.i1123: ; preds = %do.body.i1116 - br label %trace_jbd2_commit_locking.exit - -trace_jbd2_commit_locking.exit: ; preds = %if.end.i1123, %trace_jbd2_start_commit.exit - br i1 undef, label %spin_unlock.exit1146, label %if.then.i.i.i.i1144 - -if.then.i.i.i.i1144: ; preds = %trace_jbd2_commit_locking.exit - unreachable - -spin_unlock.exit1146: ; preds = %trace_jbd2_commit_locking.exit - br i1 undef, label %spin_unlock.exit1154, label %if.then.i.i.i.i1152 - -if.then.i.i.i.i1152: ; preds = %spin_unlock.exit1146 - br label %spin_unlock.exit1154 - -spin_unlock.exit1154: ; preds = %if.then.i.i.i.i1152, %spin_unlock.exit1146 - br i1 undef, label %do.body.i1159, label %trace_jbd2_commit_flushing.exit - -do.body.i1159: ; preds = %spin_unlock.exit1154 - unreachable - -trace_jbd2_commit_flushing.exit: ; preds = %spin_unlock.exit1154 - br i1 undef, label %for.end.i, label %for.body.lr.ph.i - -for.body.lr.ph.i: ; preds = %trace_jbd2_commit_flushing.exit - br i1 undef, label %spin_unlock.exit.i, label %if.then.i.i.i.i.i - -if.then.i.i.i.i.i: ; preds = %for.body.lr.ph.i - unreachable - -spin_unlock.exit.i: ; preds = %for.body.lr.ph.i - unreachable - -for.end.i: ; preds = %trace_jbd2_commit_flushing.exit - br i1 undef, label %journal_submit_data_buffers.exit, label %if.then.i.i.i.i31.i - -if.then.i.i.i.i31.i: ; preds = %for.end.i - unreachable - -journal_submit_data_buffers.exit: ; preds = %for.end.i - br i1 undef, label %if.end103, label %if.then102 - -if.then102: ; preds = %journal_submit_data_buffers.exit - unreachable - -if.end103: ; preds = %journal_submit_data_buffers.exit - br i1 undef, label %do.body.i1182, label %trace_jbd2_commit_logging.exit - -do.body.i1182: ; preds = %if.end103 - unreachable - -trace_jbd2_commit_logging.exit: ; preds = %if.end103 - br i1 undef, label %for.end.i1287, label %for.body.i1277 - -for.body.i1277: ; preds = %trace_jbd2_commit_logging.exit - unreachable - -for.end.i1287: ; preds = %trace_jbd2_commit_logging.exit - br i1 undef, label %journal_finish_inode_data_buffers.exit, label %if.then.i.i.i.i84.i - -if.then.i.i.i.i84.i: ; preds = %for.end.i1287 - unreachable - -journal_finish_inode_data_buffers.exit: ; preds = %for.end.i1287 - br i1 undef, label %if.end256, label %if.then249 - -if.then249: ; preds = %journal_finish_inode_data_buffers.exit - unreachable - -if.end256: ; preds = %journal_finish_inode_data_buffers.exit - br i1 undef, label %do.body277, label %if.then260 - -if.then260: ; preds = %if.end256 - br label %do.body277 - -do.body277: ; preds = %if.then260, %if.end256 - br label %while.body318 - -while.body318: ; preds = %wait_on_buffer.exit, %do.body277 - %tobool.i1295 = icmp eq i64 undef, 0 - br i1 %tobool.i1295, label %wait_on_buffer.exit, label %if.then.i1296 - -if.then.i1296: ; preds = %while.body318 - unreachable - -wait_on_buffer.exit: ; preds = %while.body318 - br i1 undef, label %do.body378, label %while.body318 - -do.body378: ; preds = %wait_on_buffer.exit - br i1 undef, label %while.end418, label %while.body392.lr.ph - -while.body392.lr.ph: ; preds = %do.body378 - br label %while.body392 - -while.body392: ; preds = %wait_on_buffer.exit1319, %while.body392.lr.ph - %0 = load i8** undef, align 8 - %add.ptr399 = getelementptr inbounds i8* %0, i64 -72 - %b_state.i.i1314 = bitcast i8* %add.ptr399 to i64* - %tobool.i1316 = icmp eq i64 undef, 0 - br i1 %tobool.i1316, label %wait_on_buffer.exit1319, label %if.then.i1317 - -if.then.i1317: ; preds = %while.body392 - unreachable - -wait_on_buffer.exit1319: ; preds = %while.body392 - %1 = load volatile i64* %b_state.i.i1314, align 8 - %conv.i.i1322 = and i64 %1, 1 - %lnot404 = icmp eq i64 %conv.i.i1322, 0 - %.err.4 = select i1 %lnot404, i32 -5, i32 undef - %2 = call i64 asm sideeffect "1:.long 0x7c0000a8 $| ((($0) & 0x1f) << 21) $| (((0) & 0x1f) << 16) $| ((($3) & 0x1f) << 11) $| (((0) & 0x1) << 0) \0Aandc $0,$0,$2\0Astdcx. $0,0,$3\0Abne- 1b\0A", "=&r,=*m,r,r,*m,~{cc},~{memory}"(i64* %b_state.i.i1314, i64 262144, i64* %b_state.i.i1314, i64* %b_state.i.i1314) #1 - %prev.i.i.i1325 = getelementptr inbounds i8* %0, i64 8 - %3 = load i32** null, align 8 - store i32* %3, i32** undef, align 8 - call void @__brelse(i32* undef) #1 - br i1 undef, label %while.end418, label %while.body392 - -; CHECK-LABEL: @jbd2_journal_commit_transaction -; CHECK-NOT: andi. -; CHECK: stdcx. -; CHECK: andi. -; CHECK: isel - -while.end418: ; preds = %wait_on_buffer.exit1319, %do.body378 - %err.4.lcssa = phi i32 [ undef, %do.body378 ], [ %.err.4, %wait_on_buffer.exit1319 ] - br i1 undef, label %if.end421, label %if.then420 - -if.then420: ; preds = %while.end418 - call void @jbd2_journal_abort(i32* %journal, i32 signext %err.4.lcssa) #1 - br label %if.end421 - -if.end421: ; preds = %if.then420, %while.end418 - unreachable -} - -declare void @jbd2_journal_abort(i32*, i32 signext) - -declare void @__brelse(i32*) - -attributes #0 = { nounwind } -attributes #1 = { nounwind } -