[PATCH v3] Bug 18833 - ARMAsmParser fails to recognize .req directive alias name in capital letters

lin zuojian manjian2006 at gmail.com
Mon Feb 17 22:01:07 PST 2014


@ Duncan,
I thought just passing the compilation might be test.But I add CHECK
comments now
@Saleem
> Whilst this is conceptually correct, I dont think it is sufficient.
This will fix the `.unreq' directive but will not handle the use of the
alias. Both of them should be addressed simultaneously imo.
I have no idea what other alias problem is.FYI,the req directive
requires case insensitive names.

Index: test/MC/ARM/dot-req-capital.s
===================================================================
--- test/MC/ARM/dot-req-capital.s (revision 0)
+++ test/MC/ARM/dot-req-capital.s (working copy)
@@ -0,0 +1,20 @@
+@ RUN: llvm-mc -triple=arm < %s | FileCheck %s
+ .syntax unified
+_foo:
+
+ OBJECT .req r2
+ mov r4, OBJECT
+ mov r4, oBjEcT
+ .unreq OBJECT
+
+_foo2:
+ OBJECT .req r5
+ mov r4, OBJECT
+ .unreq OBJECT
+
+@ CHECK-LABEL: _foo:
+@ CHECK: mov r4, r2
+@ CHECK: mov r4, r2
+
+@ CHECK-LABEL: _foo2:
+@ CHECK: mov r4, r5
Index: lib/Target/ARM/AsmParser/ARMAsmParser.cpp
===================================================================
--- lib/Target/ARM/AsmParser/ARMAsmParser.cpp (revision 201500)
+++ lib/Target/ARM/AsmParser/ARMAsmParser.cpp (working copy)
@@ -8243,7 +8243,7 @@
Error(L, "unexpected input in .unreq directive.");
return false;
}
- RegisterReqs.erase(Parser.getTok().getIdentifier());
+ RegisterReqs.erase(Parser.getTok().getIdentifier().lower());
Parser.Lex(); // Eat the identifier.
return false;
}





More information about the llvm-commits mailing list