[PATCH] Fix ICE in ia64 speculation support

Vladimir Makarov vmakarov@redhat.com
Thu Sep 20 21:51:00 GMT 2007


Vladimir Makarov wrote:
> Maxim Kuvyrkov wrote:
>>
>> The issue is that may_trap_p () can return different results given 
>> normal instruction and its speculative version.  E.g., this occurs 
>> for (set (reg:DF) (mem:DF)) and (set (reg:DF) (unspec:DF [(mem:DF)] 
>> DATA_SPEC)).  The latter is a speculative variant of the former and 
>> may_trap_p () always returns 'true' for the speculative version 
>> because unspec:DF is considered a random floating point operation 
>> that might trap.
>>
>> This causes an assert, that checks that a speculative insn can stay 
>> speculative, fail.  The fix is to use original pattern when calling 
>> may_trap_p ().
>>
>>
> Sorry, I can reproduce the bug.  I've tried today repository.  No luck.
>
                     ^ should be 'can not'
> I think that right solution would be make may_trap_p to understand 
> that the insn is speculative.  But without reproducing the bug, I can 
> not be sure about my proposal.



More information about the Gcc-patches mailing list