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

            Bug ID: 81543
           Summary: attribute may_alias on function and variable
                    declarations silently accepted
           Product: gcc
           Version: 8.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: msebor at gcc dot gnu.org
  Target Milestone: ---

Attribute may_alias is documented among type attributes like so:

  Accesses through pointers to types with this attribute are not subject to
type-based alias analysis, but are instead assumed to be able to alias any
other type of objects.

The attribute is not listed not among those that can be applied to functions or
variables, yet GCC also accepts it on declarations of those.

It doesn't seem meaningful to specify the attribute on variables (especially of
non-pointer types), and using on a function declaration seems dubious.

Either the attribute should be rejected in those two contexts, or its meaning
should be documented.

$ cat b.c && /ssd/build/gcc-80806/gcc/xgcc -B /ssd/build/gcc-80806/gcc -O2 -S
-Wall -Wextra -Wpedantic b.c
int var __attribute__ ((may_alias));

void __attribute__ ((may_alias)) foo (void);
$

Reply via email to