This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/65011] New: misleading error message for target attribute


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

            Bug ID: 65011
           Summary: misleading error message for target attribute
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: drepper.fsp+rhbz at gmail dot com

The target attribute named "default" is handled special and this causes a
problem in error reporting.  If I have code like this:

__attribute__((target("sse2","avx2")))
void foo(double *__restrict r, const double *__restrict a, const double
*__restrict b, double f)
{
  for (unsigned i = 0; i < 128; ++i)
    r[i] = a[i] * f + b[i];
}

the compiler doesn't complain even though it ignores one of the parameters of
the target attribute.  That's a question for another day.

The problem is that replacing one of the strings with "default" causes a
problem:

$ cat u.cc
__attribute__((target("default","avx2")))
void foo(double *__restrict r, const double *__restrict a, const double
*__restrict b, double f)
{
  for (unsigned i = 0; i < 128; ++i)
    r[i] = a[i] * f + b[i];
}
$ local-gcc -c -O3 u.cc
u.cc:10:96: error: attribute(target("default")) is unknown
 void foo(double *__restrict r, const double *__restrict a, const double
*__restrict b, double f)
                                                                               
                ^

Of course "default" is known.  But it is not parsed in
ix86_valid_target_attribute_inner_p.  It seems (haven't verified it) that the
caller checks for "default" being the entire string and if this is not the case
defers parsing to ix86_valid_target_attribute_inner_p.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]