On Wed, Mar 21, 2018 at 11:48 AM, Richard Sandiford
<richard.sandif...@linaro.org> wrote:
> Richard Biener <richard.guent...@gmail.com> writes:
>> On Wed, Mar 21, 2018 at 9:33 AM, Richard Sandiford
>> <richard.sandif...@linaro.org> wrote:
>>> Index: gcc/diagnostic.c
>>> ===================================================================
>>> --- gcc/diagnostic.c    2018-03-01 08:20:43.589534337 +0000
>>> +++ gcc/diagnostic.c    2018-03-21 08:31:34.635677798 +0000
>>> @@ -1407,6 +1407,20 @@ sorry (const char *gmsgid, ...)
>>>    va_end (ap);
>>>  }
>>>
>>> +/* Same, but stop compilation immediately.  */
>>> +
>>> +void
>>> +fatal_sorry (const char *gmsgid, ...)
>>> +{
>>> +  va_list ap;
>>> +  va_start (ap, gmsgid);
>>> +  rich_location richloc (line_table, input_location);
>>> +  diagnostic_impl (&richloc, -1, gmsgid, &ap, DK_SORRY);
>>> +  va_end (ap);
>>> +
>>> +  exit (FATAL_EXIT_CODE);
>>
>> This is somewhat not in style of the other "fatal" handlers.  I guess
>> you don't get "sorry: " when using DK_FATAL, but ...
>
> I didn't add another DK_* because I don't think we want a different prefix
> (unliked "error:" vs. "fatal error:").
>
>>> +}
>>> +
>>>  /* Return true if an error or a "sorry" has been seen.  Various
>>>     processing is disabled after errors.  */
>>>  bool
>>> Index: gcc/calls.c
>>> ===================================================================
>>> --- gcc/calls.c 2018-03-17 08:30:20.937100705 +0000
>>> +++ gcc/calls.c 2018-03-21 08:31:34.635677798 +0000
>>> @@ -4052,13 +4052,10 @@ expand_call (tree exp, rtx target, int i
>>>               rtx_insn *before_arg = get_last_insn ();
>>>
>>>               /* We don't allow passing huge (> 2^30 B) arguments
>>> -                by value.  It would cause an overflow later on.  */
>>> +                by value.  It would cause an overflow later on.  */
>>>               if (constant_lower_bound (adjusted_args_size.constant)
>>>                   >= (1 << (HOST_BITS_PER_INT - 2)))
>>> -               {
>>> -                 sorry ("passing too large argument on stack");
>>> -                 continue;
>>> -               }
>>> +               fatal_sorry ("passing too large argument on stack");
>>
>> ... why not use fatal_error here?  It doesn't seem to be something
>> that is just not implemented but impossible to implement?
>
> It's HOST_BITS_PER_INT rather than _WIDE_INT, so I think we could
> implement it if we were tighter with types.  E.g. this PR occurred
> because we went from int to HWI for some things, which should have
> fixed part of the problem.  There might still be other uses of
> "int" that need to change though.

Ah, missed the BITS part.  I wonder if we can get away with simply
setting adjusted_args_size.constant to some small constant?  For
bits we generally need offset_ints, just HWI isn't enough anyway.

Richard.

> Thanks,
> Richard
>
>> So, OK with just using fatal_error here (please add a comment why
>> we're not continuing).

Reply via email to