https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101671

--- Comment #2 from Aldy Hernandez <aldyh at redhat dot com> ---
Yeah, that would be great.  Thanks!

On Thu, Jul 29, 2021 at 6:05 PM msebor at gcc dot gnu.org
<gcc-bugzi...@gcc.gnu.org> wrote:
>
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101671
>
> Martin Sebor <msebor at gcc dot gnu.org> changed:
>
>            What    |Removed                     |Added
> ----------------------------------------------------------------------------
>                  CC|                            |msebor at gcc dot gnu.org
>    Last reconfirmed|                            |2021-07-29
>            Keywords|                            |diagnostic
>             Summary|pr83510 fails because       |pr83510 fails with -Os
>                    |threader confuses           |because threader confuses
>                    |-Warray-bounds              |-Warray-bounds
>      Ever confirmed|0                           |1
>              Status|UNCONFIRMED                 |NEW
>
> --- Comment #1 from Martin Sebor <msebor at gcc dot gnu.org> ---
> Confirmed.  I've extracted the test case that fails from the bigger test.
> Rather than xfailing the whole test I think it would be better to split out
> just the failing case and/or xfail just that assertion.  Unless you expect the
> others to start failing too due to some changes you still have planned?
>
> $ cat a.c && gcc -Os -S -Wall a.c
> extern int f (void);
> extern void sink (unsigned int);
>
> unsigned int a[10];
>
> static unsigned int g (int i, int j)
> {
>   if (i == 9)
>     return j;
>   else if (i == 10)
>     return a[i];    // no warning here
>   return 0;
> }
>
> void test_g (int j)
> {
>   for (int i = 0; i < 10; i++)
>     {
>       if (f ())
>         sink (g (i, j));
>     }
> }
>
> static unsigned int h (int i, int j)
> {
>   switch (i)
>     {
>     case 9:
>       return j;
>     case 10:
>       return a[i];  // { dg-bogus "-Warray-bounds" }
>     }
>   return 0;
> }
>
> void test_h (int j)
> {
>   for (int i = 0; i < 10; i++)
>     {
>       if (f ())
>         sink (h (i, j));
>     }
> }
> In function ‘h’,
>     inlined from ‘test_h’ at a.c:41:2:
> a.c:31:15: warning: array subscript 10 is above array bounds of ‘unsigned
> int[10]’ [-Warray-bounds]
>    31 |       return a[i];  // { dg-bogus "-Warray-bounds" }
>       |              ~^~~
> a.c: In function ‘test_h’:
> a.c:4:14: note: while referencing ‘a’
>     4 | unsigned int a[10];
>       |              ^
>
> --
> You are receiving this mail because:
> You reported the bug.
>

Reply via email to