Chromium Code Reviews| Index: src/IceInstMIPS32.cpp |
| diff --git a/src/IceInstMIPS32.cpp b/src/IceInstMIPS32.cpp |
| index bca00ba147dc98eae7caa73d9d7d2fb1ae7d74d6..23faf229085cbc3bffab01593dd880a4cc685e56 100644 |
| --- a/src/IceInstMIPS32.cpp |
| +++ b/src/IceInstMIPS32.cpp |
| @@ -273,8 +273,10 @@ void InstMIPS32Label::emit(const Cfg *Func) const { |
| } |
| void InstMIPS32Label::emitIAS(const Cfg *Func) const { |
| - (void)Func; |
| - llvm_unreachable("Not yet implemented"); |
| + auto *Asm = Func->getAssembler<MIPS32::AssemblerMIPS32>(); |
| + Asm->bindLocalLabel(this, Number); |
| + // if (Asm->needsTextFixup()) |
|
jaydeep.patil
2016/09/24 08:05:18
Commented code
obucinac
2016/09/26 17:16:25
Removed.
Implementation will be added in a separa
|
| + // emitUsingTextFixup(Func); |
| } |
| InstMIPS32Call::InstMIPS32Call(Cfg *Func, Variable *Dest, Operand *CallTarget) |
| @@ -419,7 +421,11 @@ void InstMIPS32Ret::emit(const Cfg *Func) const { |
| void InstMIPS32Br::emitIAS(const Cfg *Func) const { |
| auto *Asm = Func->getAssembler<MIPS32::AssemblerMIPS32>(); |
| - if (isUnconditionalBranch()) { |
| + if (Label != nullptr) { |
| + // Intra-block branches are of kind bcc |
| + Asm->bcc(Predicate, getSrc(0), getSrc(1), |
| + Asm->getOrCreateLocalLabel(Label->getNumber())); |
| + } else if (isUnconditionalBranch()) { |
| Asm->b(Asm->getOrCreateCfgNodeLabel(getTargetFalse()->getIndex())); |
| } else { |
| switch (Predicate) { |
| @@ -440,6 +446,9 @@ void InstMIPS32Br::emitIAS(const Cfg *Func) const { |
| Asm->getOrCreateCfgNodeLabel(getTargetFalse()->getIndex())); |
| break; |
| } |
| + if (getTargetTrue()) { |
| + Asm->b(Asm->getOrCreateCfgNodeLabel(getTargetTrue()->getIndex())); |
| + } |
| } |
| } |