<div dir="ltr">I'm still not sure cleaning up these warnings is worthwhile. If we aren't going to get warning clean & keep the warning on/maintained (in which case I'd really advocate for us to use Clang's version and/or implement the necessary variant in Clang) what's the merit in rephrasing the cases that aren't buggy (this appears to be such a case - correct me if I'm wrong?</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Mar 11, 2016 at 7:37 AM, Scott Egerton via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">s.egerton created this revision.<br>
s.egerton added reviewers: ariccio, dsanders, vkalintiris.<br>
s.egerton added a subscriber: llvm-commits.<br>
Herald added a subscriber: dsanders.<br>
<br>
This should eliminate all occurrences of this within LLVMMipsAsmParser.<br>
This patch is in response to <a href="http://reviews.llvm.org/D17983" rel="noreferrer" target="_blank">http://reviews.llvm.org/D17983</a>. I was unable<br>
to reproduce the warnings on my machine so please advise if this fixes the<br>
warnings.<br>
<br>
<a href="http://reviews.llvm.org/D18087" rel="noreferrer" target="_blank">http://reviews.llvm.org/D18087</a><br>
<br>
Files:<br>
lib/Target/Mips/AsmParser/MipsAsmParser.cpp<br>
<br>
Index: lib/Target/Mips/AsmParser/MipsAsmParser.cpp<br>
===================================================================<br>
--- lib/Target/Mips/AsmParser/MipsAsmParser.cpp<br>
+++ lib/Target/Mips/AsmParser/MipsAsmParser.cpp<br>
@@ -2600,8 +2600,7 @@<br>
void MipsAsmParser::expandMemInst(MCInst &Inst, SMLoc IDLoc,<br>
SmallVectorImpl<MCInst> &Instructions,<br>
bool isLoad, bool isImmOpnd) {<br>
- unsigned ImmOffset, HiOffset, LoOffset;<br>
- const MCExpr *ExprOffset;<br>
+ MCOperand HiOperand, LoOperand;<br>
unsigned TmpRegNum;<br>
// 1st operand is either the source or destination register.<br>
assert(Inst.getOperand(0).isReg() && "expected register operand kind");<br>
@@ -2612,14 +2611,19 @@<br>
// 3rd operand is either an immediate or expression.<br>
if (isImmOpnd) {<br>
assert(Inst.getOperand(2).isImm() && "expected immediate operand kind");<br>
- ImmOffset = Inst.getOperand(2).getImm();<br>
- LoOffset = ImmOffset & 0x0000ffff;<br>
- HiOffset = (ImmOffset & 0xffff0000) >> 16;<br>
+ unsigned ImmOffset = Inst.getOperand(2).getImm();<br>
+ unsigned LoOffset = ImmOffset & 0x0000ffff;<br>
+ unsigned HiOffset = (ImmOffset & 0xffff0000) >> 16;<br>
// If msb of LoOffset is 1(negative number) we must increment HiOffset.<br>
if (LoOffset & 0x8000)<br>
HiOffset++;<br>
- } else<br>
- ExprOffset = Inst.getOperand(2).getExpr();<br>
+ LoOperand = MCOperand::createImm(LoOffset);<br>
+ HiOperand = MCOperand::createImm(HiOffset);<br>
+ } else {<br>
+ const MCExpr *ExprOffset = Inst.getOperand(2).getExpr();<br>
+ LoOperand = MCOperand::createExpr(evaluateRelocExpr(ExprOffset, "lo"));<br>
+ HiOperand = MCOperand::createExpr(evaluateRelocExpr(ExprOffset, "hi"));<br>
+ }<br>
// These are some of the types of expansions we perform here:<br>
// 1) lw $8, sym => lui $8, %hi(sym)<br>
// lw $8, %lo(sym)($8)<br>
@@ -2658,20 +2662,13 @@<br>
return;<br>
}<br>
<br>
- emitRX(Mips::LUi, TmpRegNum,<br>
- isImmOpnd ? MCOperand::createImm(HiOffset)<br>
- : MCOperand::createExpr(evaluateRelocExpr(ExprOffset, "hi")),<br>
- IDLoc, Instructions);<br>
+ emitRX(Mips::LUi, TmpRegNum, HiOperand, IDLoc, Instructions);<br>
// Add temp register to base.<br>
if (BaseRegNum != Mips::ZERO)<br>
emitRRR(Mips::ADDu, TmpRegNum, TmpRegNum, BaseRegNum, IDLoc, Instructions);<br>
// And finally, create original instruction with low part<br>
// of offset and new base.<br>
- emitRRX(Inst.getOpcode(), RegOpNum, TmpRegNum,<br>
- isImmOpnd<br>
- ? MCOperand::createImm(LoOffset)<br>
- : MCOperand::createExpr(evaluateRelocExpr(ExprOffset, "lo")),<br>
- IDLoc, Instructions);<br>
+ emitRRX(Inst.getOpcode(), RegOpNum, TmpRegNum, LoOperand, IDLoc, Instructions);<br>
}<br>
<br>
bool<br>
<br>
<br>
<br>_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
<br></blockquote></div><br></div>