This is the mail archive of the binutils@sourceware.org mailing list for the binutils 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]

Re: [ARM][PR gas/19217] Fix wrong use of MOVT to replace LDR


On Thu, Nov 12, 2015 at 10:28 AM, Ramana Radhakrishnan
<ramana.gcc@googlemail.com> wrote:
> On Thu, Nov 12, 2015 at 10:03 AM, Matthew Wahab
> <matthew.wahab@foss.arm.com> wrote:
>> Hello,
>>
>> PR gas/18499 implemented an optimization in which a load-immediate (LDR
>> _, =<imm>) was replaced by a MOVW if the bottom half of <imm> was
>> non-zero or by a MOVT if the top half was non-zero
>>
>> This optimization is wrong because, unlike the LDR, the MOVT leaves
>> the bottom half of the destination register unchanged. The
>> implementation also doesn't deal with the case when the immediate is
>> non-zero in both halves. In that case, the LDR would have to be replaced
>> with a MOVW+MOVT sequence.
>
> Yep.
>>
>> The use of MOVT appears to be the cause of PR gas/19217. This patch
>> fixes that miscompilation by dropping the use of MOVT, so that the LDR _,
>> =<imm> will only be replaced by MOVW and only if the upper half of <imm>
>> is zero. It also removes a redundant feature check and fixes some
>> formatting in the code.
>>
>> Tested arm-none-linux-gnueabihf with cross-compiled check-binutils and
>> check-gas.
>>
>> Ok for trunk?
>
> Ok.
>
> regards
> Ramana
>
>> Matthew
>>
>> gas/
>> 2015-11-11  Matthew Wahab  <matthew.wahab@arm.com>
>>
>>         * config/tc-arm.c (move_or_literal_pool): Remove redundant feature
>>         check.  Fix some code formatting.  Drop use of MOVT.  Add some
>>         comments.
>>
>> gas/testsuite/
>> 2015-11-11  Matthew Wahab  <matthew.wahab@arm.com>
>>
>>         * gas/arm/thumb2_ldr_immediate_armv6t2.d: Update expected output.

I've now applied your patch as
582cfe03cb7496371bc6d83af49b6324d0c36887 adding PR numbers to the
Changelog.  Please remember to do so for next time.


regards
Ramana


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]