This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
insvsi_internal1 pattern incorrectly calculates last operand. This is exposed by the test case attached.
* config/rs6000/rs6000.md (insvsi_internal1): Fix operand[1]. * g++.dg/opt/20050511-1.C: New test.
Bootstrapped and tested on powerpc-darwin. OK?
Thanks, - Devang
*** rs6000.md 2005/05/06 16:56:06 --- rs6000.md 2005/05/11 00:06:10 *************** *** 2923,2929 **** int size = INTVAL (operands[1]) & 31;
operands[4] = GEN_INT (shift - start - size); ! operands[1] = GEN_INT (start + size - 1); return \"{rlimi|rlwimi} %0,%3,%h4,%h2,%h1\"; }" [(set_attr "type" "insert_word")]) --- 2923,2929 ---- int size = INTVAL (operands[1]) & 31;
operands[4] = GEN_INT (shift - start - size); ! operands[1] = GEN_INT (start + size - 1 - shift); return \"{rlimi|rlwimi} %0,%3,%h4,%h2,%h1\"; }" [(set_attr "type" "insert_word")])
Attachment:
R4110735.diff
Description: Binary data
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |