From 66d7791176fef493bb4dc7fcd6929e7aab6135c6 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. llvm-svn: 223442 --- llvm/lib/CodeGen/ScheduleDAGInstrs.cpp | 8 +- llvm/test/CodeGen/PowerPC/subreg-postra.ll | 168 ----------------------------- 2 files changed, 1 insertion(+), 175 deletions(-) delete mode 100644 llvm/test/CodeGen/PowerPC/subreg-postra.ll diff --git a/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp b/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp index ec376e8..d8d8422 100644 --- a/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp +++ b/llvm/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/llvm/test/CodeGen/PowerPC/subreg-postra.ll b/llvm/test/CodeGen/PowerPC/subreg-postra.ll deleted file mode 100644 index 25e23b7..0000000 --- a/llvm/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 } - -- 2.7.4