[Bug rtl-optimization/23585] [4.0 regression] mem_fun* code fine with -O1, bus error with -O2
Andrew Pinski
pinskia@physics.uc.edu
Tue Oct 11 13:54:00 GMT 2005
On Oct 11, 2005, at 9:51 AM, ebotcazou at gcc dot gnu dot org wrote:
>
>
> ------- Comment #8 from ebotcazou at gcc dot gnu dot org 2005-10-11
> 13:51 -------
>> Yes, I think the problem is in delay slot scheduling too. COND_EXPR
>> means that
>> either branch must not be evaluated because it could be illegal; if
>> you hoist a
>> mem from a branch into the delay slot of the condition, you are
>> effectively
>> partially evaluting the branch.
>
> Yes, that makes sense. At the moment the predicate used in reorg.c is
> may_trap_p so we would need to detect faulting instructions too.
may_trap_p is the correct thing as it should detect this instruction as
trapping:
/* Memory ref can trap unless it's a static var or a stack slot.
*/
case MEM:
if (MEM_NOTRAP_P (x))
return 0;
return rtx_addr_can_trap_p (XEXP (x, 0));
-- Pinski
More information about the Gcc-bugs
mailing list