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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P1                          |P3
   Target Milestone|9.0                         |---
            Summary|[9 Regression] ICE in       |ICE in tree_code_size, at
                   |tree_code_size, at          |tree.c:865
                   |tree.c:865                  |

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
Hmm, we don't seem to get consensus here.  I also don't see how this is
a regression, my GCC 8 compiler doesn't know __builtin_has_attribute.

So, removing the regression marker.

Can we, for GCC 9, simply say

 sorry ("unsupported argument to __builtin_has_attribute");

instead of ICEing and/or extending the specification in some ways?

For reference, GCC 8 says

t.c:1:22: warning: implicit declaration of function ‘__builtin_has_attribute’;
did you mean ‘__builtin_va_start’? [-Wimplicit-function-declaration]
 typedef int Assert [(__builtin_has_attribute (1, target("sse")) == 1)];
                      ^~~~~~~~~~~~~~~~~~~~~~~
                      __builtin_va_start
t.c:1:50: warning: implicit declaration of function ‘target’
[-Wimplicit-function-declaration]
 typedef int Assert [(__builtin_has_attribute (1, target("sse")) == 1)];
                                                  ^~~~~~
t.c:1:13: error: variably modified ‘Assert’ at file scope
 typedef int Assert [(__builtin_has_attribute (1, target("sse")) == 1)];
             ^~~~~~

Reply via email to