Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(121)

Side by Side Diff: lib/Target/PowerPC/PPCBranchSelector.cpp

Issue 183273009: Prep for merging 3.4: Undo changes from 3.3 branch (Closed) Base URL: http://git.chromium.org/native_client/pnacl-llvm.git@master
Patch Set: Retry Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 //===-- PPCBranchSelector.cpp - Emit long conditional branches ------------===// 1 //===-- PPCBranchSelector.cpp - Emit long conditional branches ------------===//
2 // 2 //
3 // The LLVM Compiler Infrastructure 3 // The LLVM Compiler Infrastructure
4 // 4 //
5 // This file is distributed under the University of Illinois Open Source 5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details. 6 // License. See LICENSE.TXT for details.
7 // 7 //
8 //===----------------------------------------------------------------------===// 8 //===----------------------------------------------------------------------===//
9 // 9 //
10 // This file contains a pass that scans a machine function to determine which 10 // This file contains a pass that scans a machine function to determine which
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 while (MadeChange) { 105 while (MadeChange) {
106 // Iteratively expand branches until we reach a fixed point. 106 // Iteratively expand branches until we reach a fixed point.
107 MadeChange = false; 107 MadeChange = false;
108 108
109 for (MachineFunction::iterator MFI = Fn.begin(), E = Fn.end(); MFI != E; 109 for (MachineFunction::iterator MFI = Fn.begin(), E = Fn.end(); MFI != E;
110 ++MFI) { 110 ++MFI) {
111 MachineBasicBlock &MBB = *MFI; 111 MachineBasicBlock &MBB = *MFI;
112 unsigned MBBStartOffset = 0; 112 unsigned MBBStartOffset = 0;
113 for (MachineBasicBlock::iterator I = MBB.begin(), E = MBB.end(); 113 for (MachineBasicBlock::iterator I = MBB.begin(), E = MBB.end();
114 I != E; ++I) { 114 I != E; ++I) {
115 MachineBasicBlock *Dest = 0; 115 if (I->getOpcode() != PPC::BCC || I->getOperand(2).isImm()) {
116 if (I->getOpcode() == PPC::BCC && !I->getOperand(2).isImm())
117 Dest = I->getOperand(2).getMBB();
118 else if ((I->getOpcode() == PPC::BDNZ8 || I->getOpcode() == PPC::BDNZ ||
119 I->getOpcode() == PPC::BDZ8 || I->getOpcode() == PPC::BDZ) &&
120 !I->getOperand(0).isImm())
121 Dest = I->getOperand(0).getMBB();
122
123 if (!Dest) {
124 MBBStartOffset += TII->GetInstSizeInBytes(I); 116 MBBStartOffset += TII->GetInstSizeInBytes(I);
125 continue; 117 continue;
126 } 118 }
127 119
128 // Determine the offset from the current branch to the destination 120 // Determine the offset from the current branch to the destination
129 // block. 121 // block.
122 MachineBasicBlock *Dest = I->getOperand(2).getMBB();
123
130 int BranchSize; 124 int BranchSize;
131 if (Dest->getNumber() <= MBB.getNumber()) { 125 if (Dest->getNumber() <= MBB.getNumber()) {
132 // If this is a backwards branch, the delta is the offset from the 126 // If this is a backwards branch, the delta is the offset from the
133 // start of this block to this branch, plus the sizes of all blocks 127 // start of this block to this branch, plus the sizes of all blocks
134 // from this block to the dest. 128 // from this block to the dest.
135 BranchSize = MBBStartOffset; 129 BranchSize = MBBStartOffset;
136 130
137 for (unsigned i = Dest->getNumber(), e = MBB.getNumber(); i != e; ++i) 131 for (unsigned i = Dest->getNumber(), e = MBB.getNumber(); i != e; ++i)
138 BranchSize += BlockSizes[i]; 132 BranchSize += BlockSizes[i];
139 } else { 133 } else {
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 MadeChange = true; 186 MadeChange = true;
193 } 187 }
194 } 188 }
195 EverMadeChange |= MadeChange; 189 EverMadeChange |= MadeChange;
196 } 190 }
197 191
198 BlockSizes.clear(); 192 BlockSizes.clear();
199 return true; 193 return true;
200 } 194 }
201 195
OLDNEW
« no previous file with comments | « lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp ('k') | lib/Target/PowerPC/PPCFrameLowering.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698