mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-19 19:29:31 +00:00
Fix problem where labels were being incorrectly elided, and fix problem
where PHI copies where not emitted for the default label of switch insts git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5882 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f5612b76bc
commit
f1acd9623c
@ -817,7 +817,8 @@ void CWriter::printFunction(Function *F) {
|
||||
for (Value::use_iterator UI = BB->use_begin(), UE = BB->use_end();
|
||||
UI != UE; ++UI)
|
||||
if (TerminatorInst *TI = dyn_cast<TerminatorInst>(*UI))
|
||||
if (TI != Prev->getTerminator()) {
|
||||
if (TI != Prev->getTerminator() ||
|
||||
isa<SwitchInst>(Prev->getTerminator())) {
|
||||
NeedsLabel = true;
|
||||
break;
|
||||
}
|
||||
@ -867,8 +868,8 @@ void CWriter::visitReturnInst(ReturnInst &I) {
|
||||
void CWriter::visitSwitchInst(SwitchInst &SI) {
|
||||
Out << " switch (";
|
||||
writeOperand(SI.getOperand(0));
|
||||
Out << ") {\n default: goto ";
|
||||
writeOperand(SI.getDefaultDest());
|
||||
Out << ") {\n default:\n";
|
||||
printBranchToBlock(SI.getParent(), SI.getDefaultDest(), 2);
|
||||
Out << ";\n";
|
||||
for (unsigned i = 2, e = SI.getNumOperands(); i != e; i += 2) {
|
||||
Out << " case ";
|
||||
|
@ -817,7 +817,8 @@ void CWriter::printFunction(Function *F) {
|
||||
for (Value::use_iterator UI = BB->use_begin(), UE = BB->use_end();
|
||||
UI != UE; ++UI)
|
||||
if (TerminatorInst *TI = dyn_cast<TerminatorInst>(*UI))
|
||||
if (TI != Prev->getTerminator()) {
|
||||
if (TI != Prev->getTerminator() ||
|
||||
isa<SwitchInst>(Prev->getTerminator())) {
|
||||
NeedsLabel = true;
|
||||
break;
|
||||
}
|
||||
@ -867,8 +868,8 @@ void CWriter::visitReturnInst(ReturnInst &I) {
|
||||
void CWriter::visitSwitchInst(SwitchInst &SI) {
|
||||
Out << " switch (";
|
||||
writeOperand(SI.getOperand(0));
|
||||
Out << ") {\n default: goto ";
|
||||
writeOperand(SI.getDefaultDest());
|
||||
Out << ") {\n default:\n";
|
||||
printBranchToBlock(SI.getParent(), SI.getDefaultDest(), 2);
|
||||
Out << ";\n";
|
||||
for (unsigned i = 2, e = SI.getNumOperands(); i != e; i += 2) {
|
||||
Out << " case ";
|
||||
|
Loading…
Reference in New Issue
Block a user