diff options
| -rw-r--r-- | llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp | 5 | ||||
| -rw-r--r-- | llvm/test/MC/ARM/directive-arch-semantic-action.s | 12 | 
2 files changed, 17 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp index 68188b13137..b0bde037b91 100644 --- a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp +++ b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp @@ -15,6 +15,7 @@  #include "llvm/ADT/SmallVector.h"  #include "llvm/ADT/StringExtras.h"  #include "llvm/ADT/StringSwitch.h" +#include "llvm/ADT/Triple.h"  #include "llvm/ADT/Twine.h"  #include "llvm/MC/MCAsmInfo.h"  #include "llvm/MC/MCAssembler.h" @@ -9023,6 +9024,10 @@ bool ARMAsmParser::parseDirectiveArch(SMLoc L) {      return false;    } +  Triple T; +  STI.setDefaultFeatures(T.getARMCPUForArch(Arch)); +  setAvailableFeatures(ComputeAvailableFeatures(STI.getFeatureBits())); +    getTargetStreamer().emitArch(ID);    return false;  } diff --git a/llvm/test/MC/ARM/directive-arch-semantic-action.s b/llvm/test/MC/ARM/directive-arch-semantic-action.s new file mode 100644 index 00000000000..2d64026e041 --- /dev/null +++ b/llvm/test/MC/ARM/directive-arch-semantic-action.s @@ -0,0 +1,12 @@ +@ RUN: not llvm-mc -triple arm-gnueabi-linux -filetype asm %s 2>&1 | FileCheck %s + +	.arch	armv6 +        dsb +@ CHECK: error: instruction requires: data-barriers + +        .arch   armv7 +        dsb +@ CHECK-NOT: error: instruction requires: data-barriers + +        .arch   invalid_architecture_name +@ CHECK: error: Unknown arch name          | 

