]> granicus.if.org Git - clang/commitdiff
[ARM] ARM-specific attributes should be accepted for big-endian
authorOliver Stannard <oliver.stannard@arm.com>
Thu, 15 Sep 2016 08:55:41 +0000 (08:55 +0000)
committerOliver Stannard <oliver.stannard@arm.com>
Thu, 15 Sep 2016 08:55:41 +0000 (08:55 +0000)
The ARM-specific C attributes (currently just interrupt) need to check
for both the big- and little-endian versions of the triples, so that
they are accepted for both big and little endian targets.

TargetWindows and TargetMicrosoftCXXABI also only use the little-endian
triples, but this is correct as windows is not supported on big-endian
ARM targets (and this is asserted in lib/Basic/Targets.cpp).

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@281596 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/Attr.td
test/Sema/arm-interrupt-attr.c

index b72222fc5cf5c3ba943992e4b233152cfc386a1b..2424d7ada9841bcabe24222b63361a2304060d61 100644 (file)
@@ -254,7 +254,7 @@ class TargetArch<list<string> arches> {
   list<string> OSes;
   list<string> CXXABIs;
 }
-def TargetARM : TargetArch<["arm", "thumb"]>;
+def TargetARM : TargetArch<["arm", "thumb", "armeb", "thumbeb"]>;
 def TargetMips : TargetArch<["mips", "mipsel"]>;
 def TargetMSP430 : TargetArch<["msp430"]>;
 def TargetX86 : TargetArch<["x86"]>;
index e8f21ada7fc1b7704a6328a8429ac4abe3802781..b9684f0b46c1e983ddacfdd09eb2e3ba8b004944 100644 (file)
@@ -1,4 +1,7 @@
 // RUN: %clang_cc1 %s -triple arm-apple-darwin -verify -fsyntax-only
+// RUN: %clang_cc1 %s -triple thumb-apple-darwin -verify -fsyntax-only
+// RUN: %clang_cc1 %s -triple armeb-none-eabi -verify -fsyntax-only
+// RUN: %clang_cc1 %s -triple thumbeb-none-eabi -verify -fsyntax-only
 
 __attribute__((interrupt(IRQ))) void foo() {} // expected-error {{'interrupt' attribute requires a string}}
 __attribute__((interrupt("irq"))) void foo1() {} // expected-warning {{'interrupt' attribute argument not supported: irq}}