summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp
diff options
context:
space:
mode:
authorSasa Stankovic <Sasa.Stankovic@imgtec.com>2014-06-09 14:09:28 +0000
committerSasa Stankovic <Sasa.Stankovic@imgtec.com>2014-06-09 14:09:28 +0000
commite435f5b2d42c40f33f4bd8126ac726f1cfdde59d (patch)
tree392bfdd56b1e37e2e74e29743aea9b1426a29d27 /llvm/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp
parent1de1d63aec1e6e319ddc4928a0bdd2decc64e301 (diff)
downloadbcm5719-llvm-e435f5b2d42c40f33f4bd8126ac726f1cfdde59d.tar.gz
bcm5719-llvm-e435f5b2d42c40f33f4bd8126ac726f1cfdde59d.zip
[mips] Fix a bug for NaCl target - Don't report the error when non-dangerous
load/store is in branch delay slot. Differential Revision: http://llvm-reviews.chandlerc.com/D4048 llvm-svn: 210470
Diffstat (limited to 'llvm/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp')
-rw-r--r--llvm/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/llvm/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp b/llvm/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp
index cd6be734dfe..9a7fc85e912 100644
--- a/llvm/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp
+++ b/llvm/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp
@@ -137,18 +137,17 @@ public:
&IsStore);
bool IsSPFirstOperand = isStackPointerFirstOperand(Inst);
if (IsMemAccess || IsSPFirstOperand) {
- if (PendingCall)
- report_fatal_error("Dangerous instruction in branch delay slot!");
-
bool MaskBefore = (IsMemAccess
&& baseRegNeedsLoadStoreMask(Inst.getOperand(AddrIdx)
.getReg()));
bool MaskAfter = IsSPFirstOperand && !IsStore;
- if (MaskBefore || MaskAfter)
+ if (MaskBefore || MaskAfter) {
+ if (PendingCall)
+ report_fatal_error("Dangerous instruction in branch delay slot!");
sandboxLoadStoreStackChange(Inst, AddrIdx, STI, MaskBefore, MaskAfter);
- else
- MipsELFStreamer::EmitInstruction(Inst, STI);
- return;
+ return;
+ }
+ // fallthrough
}
// Sandbox calls by aligning call and branch delay to the bundle end.
OpenPOWER on IntegriCloud