[AARCH64][PATCH] PR59695
Kugan
kugan.vivekanandarajah@linaro.org
Wed Jan 15 10:38:00 GMT 2014
On 13/01/14 21:05, Richard Earnshaw wrote:
> On 11/01/14 23:42, Kugan wrote:
>> Hi,
>>
>> aarch64_build_constant incorrectly truncates the immediate when
>> constants are generated with MOVN. This causes coinor-osi tests to fail
>> (tracked also in https://bugs.launchpad.net/gcc-linaro/+bug/1263576)
>>
>> Attached patch fixes this. Also attaching a reduced testcase that
>> reproduces this. Tested on aarch64-none-linux-gnu with no new
>> regressions. Is this OK for trunk?
>>
>> Thanks,
>> Kugan
>>
>> gcc/
>> +2013-10-15 Matthew Gretton-Dann <matthew.gretton-dann@linaro.org>
>> + Kugan Vivekanandarajah <kuganv@linaro.org>
>> +
>> + PR target/59588
>> + * config/aarch64/aarch64.c (aarch64_build_constant): Fix incorrect
>> + truncation.
>> +
>>
>>
>> gcc/testsuite/
>> +2014-01-11 Matthew Gretton-Dann <matthew.gretton-dann@linaro.org>
>> + Kugan Vivekanandarajah <kuganv@linaro.org>
>> +
>> + PR target/59695
>> + * g++.dg/pr59695.C: New file.
>> +
>>
>>
>> p.txt
>>
>>
>> diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
>> index 3d32ea5..854666f 100644
>> --- a/gcc/config/aarch64/aarch64.c
>> +++ b/gcc/config/aarch64/aarch64.c
>> @@ -2486,7 +2486,7 @@ aarch64_build_constant (int regnum, HOST_WIDE_INT val)
>> if (ncount < zcount)
>> {
>> emit_move_insn (gen_rtx_REG (Pmode, regnum),
>> - GEN_INT ((~val) & 0xffff));
>> + GEN_INT (~((~val) & 0xffff)));
>
> I think that would be better written as
>
> GEN_INT (val | ~(HOST_WIDE_INT) 0xffff);
>
> Note the cast after the ~ to ensure we invert the right number of bits.
>
> Otherwise OK.
>
Thanks Richard. Is this OK for back-porting to 4.8 as well?
Thanks,
Kugan
More information about the Gcc-patches
mailing list