On Sat, Mar 12, 2022 at 07:40:08PM -0000, Roger Sayle wrote:
> My recent testcase for PR c++/84964.C stress tests the middle-end by
> attempting to pass a UINT_MAX sized structure on the stack.  Although
> my fix to PR84964 avoids the ICE after sorry() on x86_64 and similar
> targets, a related issue still exists on powerpc64 (and similar
> ACCUMULATE_OUTGOING_ARGS/ARGS_GROW_DOWNWARD targets) which don't
> issue a "sorry, unimplemented" message, but instead ICE elsewhere.
> 
> After attempting several alternate fixes, the simplest solution is
> to just defensively check in mark_stack_region_used that the upper
> bound of the region lies within the allocated stack_usage_map
> array, which is of size highest_outgoing_arg_in_use.  When this isn't
> the case, the code now follows the same path as for variable sized
> regions, and uses stack_usage_watermark rather than a map.

Thanks for the fix!


Segher

Reply via email to