Revert "r223440 - Consider subregs when calling MI::registerDefIsDead for phys deps"
authorHal Finkel <hfinkel@anl.gov>
Fri, 5 Dec 2014 02:07:35 +0000 (02:07 +0000)
committerHal Finkel <hfinkel@anl.gov>
Fri, 5 Dec 2014 02:07:35 +0000 (02:07 +0000)
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
test/CodeGen/PowerPC/subreg-postra.ll [deleted file]

index ec376e8e7bbe907bea8430be7af4e6ba362d6d1f..d8d8422f0edc144200c30c4c2ac490a56a4712f5 100644 (file)
@@ -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 (file)
index 25e23b7..0000000
+++ /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 }
-