mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
[PowerPC] Fix the incorrect iterator inside peephole
Instruction selection can insert nodes into the underlying list after the root node so iterating will thereby miss it. We should NOT assume that, the root node is the last element in the DAG nodelist. Patch by: steven.zhang (Qing Shan Zhang) Differential Revision: https://reviews.llvm.org/D47437 llvm-svn: 333415
This commit is contained in:
parent
5077aac217
commit
843ab43bc4
@ -5169,8 +5169,7 @@ void PPCDAGToDAGISel::foldBoolExts(SDValue &Res, SDNode *&N) {
|
||||
}
|
||||
|
||||
void PPCDAGToDAGISel::PreprocessISelDAG() {
|
||||
SelectionDAG::allnodes_iterator Position(CurDAG->getRoot().getNode());
|
||||
++Position;
|
||||
SelectionDAG::allnodes_iterator Position = CurDAG->allnodes_end();
|
||||
|
||||
bool MadeChange = false;
|
||||
while (Position != CurDAG->allnodes_begin()) {
|
||||
@ -5858,8 +5857,7 @@ void PPCDAGToDAGISel::PeepholePPC64ZExt() {
|
||||
// unnecessary. When that happens, we remove it here, and redefine the
|
||||
// relevant 32-bit operation to be a 64-bit operation.
|
||||
|
||||
SelectionDAG::allnodes_iterator Position(CurDAG->getRoot().getNode());
|
||||
++Position;
|
||||
SelectionDAG::allnodes_iterator Position = CurDAG->allnodes_end();
|
||||
|
||||
bool MadeChange = false;
|
||||
while (Position != CurDAG->allnodes_begin()) {
|
||||
@ -6016,8 +6014,7 @@ void PPCDAGToDAGISel::PeepholePPC64() {
|
||||
if (PPCSubTarget->isDarwin() || !PPCSubTarget->isPPC64())
|
||||
return;
|
||||
|
||||
SelectionDAG::allnodes_iterator Position(CurDAG->getRoot().getNode());
|
||||
++Position;
|
||||
SelectionDAG::allnodes_iterator Position = CurDAG->allnodes_end();
|
||||
|
||||
while (Position != CurDAG->allnodes_begin()) {
|
||||
SDNode *N = &*--Position;
|
||||
|
@ -43,10 +43,10 @@ entry:
|
||||
; CHECK: .LCPI[[LC]]_1:
|
||||
; CHECK: .long 0
|
||||
; CHECK: @caller_const
|
||||
; CHECK: addi [[REG0:[0-9]+]], {{[0-9]+}}, .LCPI[[LC]]_0
|
||||
; CHECK: addi [[REG1:[0-9]+]], {{[0-9]+}}, .LCPI[[LC]]_1
|
||||
; CHECK: lfs 1, 0([[REG0]])
|
||||
; CHECK: lfs 2, 0([[REG1]])
|
||||
; CHECK: addis [[REG0:[0-9]+]], 2, .LCPI[[LC]]_0@toc@ha
|
||||
; CHECK: addis [[REG1:[0-9]+]], 2, .LCPI[[LC]]_1@toc@ha
|
||||
; CHECK: lfs 1, .LCPI[[LC]]_0@toc@l([[REG0]])
|
||||
; CHECK: lfs 2, .LCPI[[LC]]_1@toc@l([[REG1]])
|
||||
; CHECK: bl test
|
||||
|
||||
define ppc_fp128 @result() {
|
||||
|
Loading…
Reference in New Issue
Block a user