projects
/
oota-llvm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Generates conditional branch instead of fake ones for Select instruction in some...
[oota-llvm.git]
/
lib
/
CodeGen
/
SelectionDAG
/
SelectionDAGISel.cpp
diff --git
a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
index 1676e2dfe08fb477b6cb01df9bec642449a880d7..491d7ec451c0525740732541e9e0b2b0625c063a 100644
(file)
--- a/
lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
+++ b/
lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
@@
-663,11
+663,15
@@
bool SelectionDAGISel::runOnMachineFunction(MachineFunction &mf) {
MachineBasicBlock* Succ2Succ = nullptr;
if ((Succ1->size() == 1 && Succ1->begin()->isUnconditionalBranch()) ||
(Succ1->size() == 0)) {
MachineBasicBlock* Succ2Succ = nullptr;
if ((Succ1->size() == 1 && Succ1->begin()->isUnconditionalBranch()) ||
(Succ1->size() == 0)) {
- Succ1Succ = *Succ1->succ_begin();
+ if (Succ1->succ_size()) {
+ Succ1Succ = *Succ1->succ_begin();
+ }
}
if ((Succ2->size() == 1 && Succ2->begin()->isUnconditionalBranch()) ||
(Succ2->size() == 0)) {
}
if ((Succ2->size() == 1 && Succ2->begin()->isUnconditionalBranch()) ||
(Succ2->size() == 0)) {
- Succ2Succ = *Succ2->succ_begin();
+ if (Succ1->succ_size()) {
+ Succ2Succ = *Succ2->succ_begin();
+ }
}
bool HasCommonDest = Succ1Succ && Succ1Succ == Succ2Succ;
}
bool HasCommonDest = Succ1Succ && Succ1Succ == Succ2Succ;
@@
-675,7
+679,6
@@
bool SelectionDAGISel::runOnMachineFunction(MachineFunction &mf) {
auto MBBIter = MBB.end();
std::advance(MBBIter, -2);
assert(MBBIter->isConditionalBranch());
auto MBBIter = MBB.end();
std::advance(MBBIter, -2);
assert(MBBIter->isConditionalBranch());
- MBBIter->disableCanEliminateMachineInstr();
MBB.disableCanEliminateMachineBB();
Succ1->disableCanEliminateMachineBB();
Succ2->disableCanEliminateMachineBB();
MBB.disableCanEliminateMachineBB();
Succ1->disableCanEliminateMachineBB();
Succ2->disableCanEliminateMachineBB();