[llvm] r228151 - [ARM] Fix subtarget feature set truncation when using .cpu directive

Bradley Smith bradley.smith at arm.com
Wed Feb 4 08:23:25 PST 2015


Author: brasmi01
Date: Wed Feb  4 10:23:24 2015
New Revision: 228151

URL: http://llvm.org/viewvc/llvm-project?rev=228151&view=rev
Log:
[ARM] Fix subtarget feature set truncation when using .cpu directive

This is a bug that was caused due to storing the feature bitset in a 32-bit
variable when it is a 64-bit mask, discarding the top half of the feature set.


Modified:
    llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
    llvm/trunk/test/MC/ARM/cpu-test.s

Modified: llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp?rev=228151&r1=228150&r2=228151&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp (original)
+++ llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp Wed Feb  4 10:23:24 2015
@@ -9182,8 +9182,7 @@ bool ARMAsmParser::parseDirectiveCPU(SML
   // see: http://llvm.org/bugs/show_bug.cgi?id=20757
   STI.InitMCProcessorInfo(CPU, "");
   STI.InitCPUSchedModel(CPU);
-  unsigned FB = ComputeAvailableFeatures(STI.getFeatureBits());
-  setAvailableFeatures(FB);
+  setAvailableFeatures(ComputeAvailableFeatures(STI.getFeatureBits()));
 
   return false;
 }

Modified: llvm/trunk/test/MC/ARM/cpu-test.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ARM/cpu-test.s?rev=228151&r1=228150&r2=228151&view=diff
==============================================================================
--- llvm/trunk/test/MC/ARM/cpu-test.s (original)
+++ llvm/trunk/test/MC/ARM/cpu-test.s Wed Feb  4 10:23:24 2015
@@ -11,3 +11,7 @@ dsb
 dsb
 // CHECK-ERROR: error: Unknown CPU name
 .cpu foobar
+// CHECK: .cpu cortex-m3
+.cpu cortex-m3
+// CHECK: sub sp, #16
+sub sp,#16





More information about the llvm-commits mailing list