This is funny -

For Linaro 4.6 for the afflicted instruction we see : 

Reload 0: reload_out (SI) = (reg/v:SI 208 [ Suppressed ])
        LO_REGS, RELOAD_OTHER (opnum = 0)
        reload_out_reg: (reg/v:SI 208 [ Suppressed ])
Reload 1: reload_in (SI) = (reg/v:SI 1356 [ OnMacroInst ])
        LO_REGS, RELOAD_FOR_INPUT (opnum = 1)
        reload_in_reg: (reg/v:SI 1356 [ OnMacroInst ])
Reload 2: reload_in (SI) = (reg/v:SI 1358 [ MacroSkipEnd ])
        LO_REGS, RELOAD_FOR_INPUT (opnum = 2)
        reload_in_reg: (reg/v:SI 1358 [ MacroSkipEnd ])
Reload 3: reload_in (SI) = (reg/v:SI 1356 [ OnMacroInst ])
        LO_REGS, RELOAD_FOR_INPUT (opnum = 4)
        reload_in_reg: (reg/v:SI 1356 [ OnMacroInst ])
Reload 4: reload_in (SI) = (reg/v:SI 1357 [ MacroSkipStart ])
        LO_REGS, RELOAD_FOR_INPUT (opnum = 5)
        reload_in_reg: (reg/v:SI 1357 [ MacroSkipStart ])
$19 = void


For FSF trunk we seem to start with a different set of reload classes   :

<ramana> and for the same insn in FSF trunk I see 
<ramana> Reload 0: reload_out (SI) = (reg/v:SI 181 [ Suppressed ])
<ramana>         LO_REGS, RELOAD_OTHER (opnum = 0)
<ramana>         reload_out_reg: (reg/v:SI 181 [ Suppressed ])
<ramana> Reload 1: reload_in (SI) = (reg/v:SI 1321 [ OnMacroInst ])
<ramana>         GENERAL_REGS, RELOAD_FOR_INPUT (opnum = 1)
<ramana>         reload_in_reg: (reg/v:SI 1321 [ OnMacroInst ])
<ramana> Reload 2: reload_in (SI) = (reg/v:SI 1323 [ MacroSkipEnd ])
<ramana>         GENERAL_REGS, RELOAD_FOR_INPUT (opnum = 2)
<ramana>         reload_in_reg: (reg/v:SI 1323 [ MacroSkipEnd ])
<ramana> Reload 3: reload_in (SI) = (reg/v:SI 1321 [ OnMacroInst ])
<ramana>         GENERAL_REGS, RELOAD_FOR_INPUT (opnum = 4)
<ramana>         reload_in_reg: (reg/v:SI 1321 [ OnMacroInst ])
<ramana> Reload 4: reload_in (SI) = (reg/v:SI 1322 [ MacroSkipStart ])
<ramana>         GENERAL_REGS, RELOAD_FOR_INPUT (opnum = 5)
<ramana>         reload_in_reg: (reg/v:SI 1322 [ MacroSkipStart ])
<ramana> 


That looks fishy to me - rsandifo on IRC also pointed out to make sure we 
understand why FSF trunk thinks that the output reload should be in the LO_REGS 
. The only reason I can think of that is that we might prefer lo_regs there to 
allow the compiler to generate 16 bit encodings if possible but this is proving 
to be interesting. 


cheers
Ramana

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/903178

Title:
  [4.6 regression/armhf] ICE, unable to find a register to spill in
  class 'LO_REGS'

To manage notifications about this bug go to:
https://bugs.launchpad.net/gcc-linaro/+bug/903178/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to