On 19/12/13 15:38, Charles Baylis wrote:
> On Tue, Nov 26, 2013 at 10:25:50AM +0000, Richard Earnshaw wrote:
>> I've just spotted another problem (that was always there):
>>> @@ -42,15 +42,15 @@
>>>  
>>>  (define_insn "*thumb_ldm4_ia"
>>>    [(match_parallel 0 "load_multiple_operation"
>>> -    [(set (match_operand:SI 1 "arm_hard_register_operand" "")
>>> +    [(set (match_operand:SI 1 "arm_hard_general_register_operand" "")
>>>            (mem:SI (match_operand:SI 5 "s_register_operand" "l")))
>>> -     (set (match_operand:SI 2 "arm_hard_register_operand" "")
>>> +     (set (match_operand:SI 2 "arm_hard_general_register_operand" "")
>>>            (mem:SI (plus:SI (match_dup 5)
>>>                    (const_int 4))))
>>> -     (set (match_operand:SI 3 "arm_hard_register_operand" "")
>>> +     (set (match_operand:SI 3 "arm_hard_general_register_operand" "")
>>>            (mem:SI (plus:SI (match_dup 5)
>>>                    (const_int 8))))
>>> -     (set (match_operand:SI 4 "arm_hard_register_operand" "")
>>> +     (set (match_operand:SI 4 "arm_hard_general_register_operand" "")
>>>            (mem:SI (plus:SI (match_dup 5)
>>>                    (const_int 12))))])]
>>>    "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 4"
>>
>> This, and other thumb1 patterns should be stricter than this, since the
>> T1 LDM/STM patterns only support low regs.  I think these need changing
>> to low_register_operand.
> 
> I've also made this change.
> 
> I've split this into 3 patches which must be applied in sequence. All patches
> have been build tested for arm-unknown-linux-gnueabihf, and the 3 rolled
> together have been bootstrapped on a Chromebook for 
> arm-unknown-linux-gnueabihf.
> 
> OK for trunk?
> 
> 
> Changelog for: 0001-PR-target-59142-vfp_hard_register_operand.patch
> 
> 2013-12-19  Charles Baylis  <charles.bay...@linaro.org>
> 
>       PR target/59142
>       gcc/
>       * arm/predicates.md (vfp_hard_register_operand): New predicate.
>       * gcc/config/arm/arm.md: (vfp_pop_multiple_with_writeback) Use
>               vfp_hard_register_operand.
> 
> 
> 
> 
> 
> Changelog for: 0002-PR-target-59142-arm_hard_general_register_operand.patch
>     
> 2013-12-19  Charles Baylis  <charles.bay...@linaro.org>
> 
>       PR target/59142
>       gcc/
>       * arm/predicates.md (arm_hard_general_register_operand): New predicate.
>       (arm_hard_register_operand): Remove.
>       * config/arm/arm-ldmstm.ml: Use arm_hard_general_register_operand
>       for all patterns.
>       * config/arm/ldmstm.md: Regenerate.
> 
> 
> 
> 
> Changelog for: 0003-PR-target-59142-low_register_operand.patch
> 
> 2013-12-19  Charles Baylis  <charles.bay...@linaro.org>
> 
>       PR target/59142
>       gcc/
>       * config/arm/arm-ldmstm.ml: Use low_register_operand for Thumb
>       patterns.
>       * config/arm/ldmstm.md: Regenerate.
> 
> 

Please fix the comment here:

 ;; Any hard register.
-(define_predicate "arm_hard_register_operand"
+(define_predicate "arm_hard_general_register_operand"

Needs to be 'Any general register.'

OK with that change.

R.

Reply via email to