[PATCH ARM] Fix PR target/63209
Xinliang David Li
davidxl@google.com
Wed Sep 10 20:12:00 GMT 2014
Fixed the formatting and committed it to trunk: r215136. Will backport
it to gcc-4_9 branch.
thanks,
David
On Wed, Sep 10, 2014 at 11:24 AM, Richard Earnshaw <rearnsha@arm.com> wrote:
> On 09/09/14 19:45, Xinliang David Li wrote:
>> Richard, thanks for the review. The revised patch is attached. Is this
>> one OK (after testing is done)?
>>
>> David
>>
>>
>
> OK, but ...
>
>> 2014-09-08 Xinliang David Li <davidxl@google.com>
>>
>> PR target/63209
>> * config/arm/arm.md (movcond_addsi): Handle case where source
>> and target operands are the same
>
> Full stop at end of sentence.
>
>>
>> 2014-09-08 Xinliang David Li <davidxl@google.com>
>>
>> PR target/63209
>> * gcc.c-torture/execute/pr63209.c: New test
>>
>
> Likewise.
>
>> pr63209.txt
>>
>>
>> Index: config/arm/arm.md
>> ===================================================================
>> --- config/arm/arm.md (revision 215039)
>> +++ config/arm/arm.md (working copy)
>> @@ -9328,10 +9328,16 @@
>> enum machine_mode mode = SELECT_CC_MODE (GET_CODE (operands[5]),
>> operands[3], operands[4]);
>> enum rtx_code rc = GET_CODE (operands[5]);
>> -
>> operands[6] = gen_rtx_REG (mode, CC_REGNUM);
>> gcc_assert (!(mode == CCFPmode || mode == CCFPEmode));
>> - rc = reverse_condition (rc);
>> + if (REGNO (operands[2]) != REGNO (operands[0]))
>> + rc = reverse_condition (rc);
>> + else
>> + {
>> + rtx tmp = operands[1];
>> + operands[1] = operands[2];
>> + operands[2] = tmp;
>
> Please use tabs and white space consistently (use tabs). Also, you seem
> to have some trailing white space at the end of some lines.
>
>> + }
>>
>> operands[6] = gen_rtx_fmt_ee (rc, VOIDmode, operands[6], const0_rtx);
>> }
>> Index: testsuite/gcc.c-torture/execute/pr63209.c
>> ===================================================================
>> --- testsuite/gcc.c-torture/execute/pr63209.c (revision 0)
>> +++ testsuite/gcc.c-torture/execute/pr63209.c (revision 0)
>> @@ -0,0 +1,27 @@
>> +static int Sub(int a, int b) {
>> + return b -a;
>> +}
>> +
>> +static unsigned Select(unsigned a, unsigned b, unsigned c) {
>> + const int pa_minus_pb =
>> + Sub((a >> 8) & 0xff, (b >> 8) & 0xff) +
>> + Sub((a >> 0) & 0xff, (b >> 0) & 0xff);
>> + return (pa_minus_pb <= 0) ? a : b;
>> +}
>> +
>> +__attribute__((noinline)) unsigned Predictor(unsigned left, const unsigned* const top) {
>> + const unsigned pred = Select(top[1], left, top[0]);
>> + return pred;
>> +}
>> +
>> +int main(void) {
>> + const unsigned top[2] = {0xff7a7a7a, 0xff7a7a7a};
>> + const unsigned left = 0xff7b7b7b;
>> + const unsigned pred = Predictor(left, top /*+ 1*/);
>> + if (pred == left)
>> + return 0;
>> + return 1;
>> +}
>> +
>> +
>> +
>>
>
>
More information about the Gcc-patches
mailing list