From 406621cce27a487637254c1d44bb1256e496f803 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Sat, 20 Dec 2008 16:34:57 +0000 Subject: [PATCH] Use the correct Preds and Succs lists in setHeightDirty() and setDepthDirty(), respectively. This fixes PR3241. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61276 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/ScheduleDAG.cpp | 8 ++++---- test/CodeGen/X86/fold-pcmpeqd-0.ll | 2 +- test/CodeGen/X86/pr3241.ll | 29 +++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 test/CodeGen/X86/pr3241.ll diff --git a/lib/CodeGen/ScheduleDAG.cpp b/lib/CodeGen/ScheduleDAG.cpp index f9ec225f3eb..59fd341e31a 100644 --- a/lib/CodeGen/ScheduleDAG.cpp +++ b/lib/CodeGen/ScheduleDAG.cpp @@ -126,8 +126,8 @@ void SUnit::setDepthDirty() { WorkList.pop_back(); if (!SU->isDepthCurrent) continue; SU->isDepthCurrent = false; - for (SUnit::const_succ_iterator I = Succs.begin(), - E = Succs.end(); I != E; ++I) + for (SUnit::const_succ_iterator I = SU->Succs.begin(), + E = SU->Succs.end(); I != E; ++I) WorkList.push_back(I->getSUnit()); } } @@ -140,8 +140,8 @@ void SUnit::setHeightDirty() { WorkList.pop_back(); if (!SU->isHeightCurrent) continue; SU->isHeightCurrent = false; - for (SUnit::const_pred_iterator I = Preds.begin(), - E = Preds.end(); I != E; ++I) + for (SUnit::const_pred_iterator I = SU->Preds.begin(), + E = SU->Preds.end(); I != E; ++I) WorkList.push_back(I->getSUnit()); } } diff --git a/test/CodeGen/X86/fold-pcmpeqd-0.ll b/test/CodeGen/X86/fold-pcmpeqd-0.ll index 152c12215dc..a529f91598f 100644 --- a/test/CodeGen/X86/fold-pcmpeqd-0.ll +++ b/test/CodeGen/X86/fold-pcmpeqd-0.ll @@ -1,4 +1,4 @@ -; RUN: llvm-as < %s | llc -mtriple=i386-apple-darwin | grep pcmpeqd | count 1 +; RUN: llvm-as < %s | llc -mtriple=i386-apple-darwin | not grep pcmpeqd ; RUN: llvm-as < %s | llc -mtriple=x86_64-apple-darwin | grep pcmpeqd | count 1 ; This testcase shouldn't need to spill the -1 value, diff --git a/test/CodeGen/X86/pr3241.ll b/test/CodeGen/X86/pr3241.ll new file mode 100644 index 00000000000..665a763f34f --- /dev/null +++ b/test/CodeGen/X86/pr3241.ll @@ -0,0 +1,29 @@ +; RUN: llvm-as < %s | llc -march=x86 +; PR3241 + +@g_620 = external global i32 + +define void @func_18(i32 %p_21) nounwind { +entry: + %t0 = call i32 @func_31(i32 %p_21) nounwind + %t1 = call i32 @safe_add_macro_uint32_t_u_u() nounwind + %t2 = icmp sgt i32 %t1, 0 + %t3 = zext i1 %t2 to i32 + %t4 = load i32* @g_620, align 4 + %t5 = icmp eq i32 %t3, %t4 + %t6 = xor i32 %p_21, 1 + %t7 = call i32 @func_55(i32 %t6) nounwind + br i1 %t5, label %return, label %bb + +bb: + unreachable + +return: + unreachable +} + +declare i32 @func_31(i32) + +declare i32 @safe_add_macro_uint32_t_u_u() + +declare i32 @func_55(i32) -- 2.11.0