andrew.w.kaylor created this revision.

This patch updates the clang function that filters the mxcsr register name to 
recognize that mxcsr is being split into two pseduo-registers that model the 
control and status bits separately.

Repository:
  rL LLVM

https://reviews.llvm.org/D30662

Files:
  lib/Parse/ParseStmtAsm.cpp


Index: lib/Parse/ParseStmtAsm.cpp
===================================================================
--- lib/Parse/ParseStmtAsm.cpp
+++ lib/Parse/ParseStmtAsm.cpp
@@ -623,8 +623,9 @@
 
   // Filter out "fpsw" and "mxcsr". They aren't valid GCC asm clobber
   // constraints. Clang always adds fpsr to the clobber list anyway.
+  // Note that mxcsr is modeled as two separate registers.
   llvm::erase_if(Clobbers, [](const std::string &C) {
-    return C == "fpsw" || C == "mxcsr";
+    return C == "fpsw" || C == "mxcsr_c" || C == "mxcsr_s";
   });
 
   // Build the vector of clobber StringRefs.


Index: lib/Parse/ParseStmtAsm.cpp
===================================================================
--- lib/Parse/ParseStmtAsm.cpp
+++ lib/Parse/ParseStmtAsm.cpp
@@ -623,8 +623,9 @@
 
   // Filter out "fpsw" and "mxcsr". They aren't valid GCC asm clobber
   // constraints. Clang always adds fpsr to the clobber list anyway.
+  // Note that mxcsr is modeled as two separate registers.
   llvm::erase_if(Clobbers, [](const std::string &C) {
-    return C == "fpsw" || C == "mxcsr";
+    return C == "fpsw" || C == "mxcsr_c" || C == "mxcsr_s";
   });
 
   // Build the vector of clobber StringRefs.
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to