[ARM,MVE] Fix user-namespace violation in arm_mve.h.
authorSimon Tatham <simon.tatham@arm.com>
Thu, 12 Mar 2020 09:57:40 +0000 (09:57 +0000)
committerSimon Tatham <simon.tatham@arm.com>
Thu, 12 Mar 2020 11:13:50 +0000 (11:13 +0000)
Summary:
We were generating the declarations of polymorphic intrinsics using
`__attribute__((overloadable))`. But `overloadable` is a valid
identifier for an end user to define as a macro in a C program, and if
they do that before including `<arm_mve.h>`, then we shouldn't cause a
compile error.

Fixed to spell the attribute name `__overloadable__` instead.

Reviewers: miyuki, MarkMurrayARM, ostannard

Reviewed By: miyuki

Subscribers: kristof.beyls, dmgreen, danielkiss, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D75997

clang/utils/TableGen/MveEmitter.cpp

index 9a9fe00..f75f500 100644 (file)
@@ -1874,7 +1874,7 @@ void MveEmitter::EmitHeader(raw_ostream &OS) {
         // match your call".
 
         OS << "static __inline__ __attribute__(("
-           << (Polymorphic ? "overloadable, " : "")
+           << (Polymorphic ? "__overloadable__, " : "")
            << "__clang_arm_builtin_alias(__builtin_arm_mve_" << Int.fullName()
            << ")))\n"
            << RetTypeName << FunctionName << "(" << ArgTypesString << ");\n";
@@ -2041,7 +2041,7 @@ void CdeEmitter::EmitHeader(raw_ostream &OS) {
       // Emit the actual declaration. See MveEmitter::EmitHeader for detailed
       // comments
       OS << "static __inline__ __attribute__(("
-         << (Polymorphic ? "overloadable, " : "")
+         << (Polymorphic ? "__overloadable__, " : "")
          << "__clang_arm_builtin_alias(__builtin_arm_" << Int.builtinExtension()
          << "_" << Int.fullName() << ")))\n"
          << RetTypeName << FunctionName << "(" << ArgTypesString << ");\n";