[llvm] r228109 - Fix some unnoticed/unwanted behavior change from r222319.
Frederic Riss
friss at apple.com
Tue Feb 3 19:10:04 PST 2015
Author: friss
Date: Tue Feb 3 21:10:03 2015
New Revision: 228109
URL: http://llvm.org/viewvc/llvm-project?rev=228109&view=rev
Log:
Fix some unnoticed/unwanted behavior change from r222319.
The ARM assembler allows register alias redefinitions as long as it
targets the same register. r222319 broke that. In the AArch64 case
it would just produce a new warning, but in the ARM case it would
error out on previously accepted assembler.
Modified:
llvm/trunk/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
llvm/trunk/test/MC/AArch64/dot-req.s
llvm/trunk/test/MC/ARM/dot-req.s
Modified: llvm/trunk/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp?rev=228109&r1=228108&r2=228109&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp (original)
+++ llvm/trunk/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp Tue Feb 3 21:10:03 2015
@@ -4132,7 +4132,7 @@ bool AArch64AsmParser::parseDirectiveReq
Parser.Lex(); // Consume the EndOfStatement
auto pair = std::make_pair(IsVector, RegNum);
- if (!RegisterReqs.insert(std::make_pair(Name, pair)).second)
+ if (RegisterReqs.insert(std::make_pair(Name, pair)).first->second != pair)
Warning(L, "ignoring redefinition of register alias '" + Name + "'");
return true;
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=228109&r1=228108&r2=228109&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp (original)
+++ llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp Tue Feb 3 21:10:03 2015
@@ -9010,7 +9010,7 @@ bool ARMAsmParser::parseDirectiveReq(Str
Parser.Lex(); // Consume the EndOfStatement
- if (!RegisterReqs.insert(std::make_pair(Name, Reg)).second) {
+ if (RegisterReqs.insert(std::make_pair(Name, Reg)).first->second != Reg) {
Error(SRegLoc, "redefinition of '" + Name + "' does not match original.");
return false;
}
Modified: llvm/trunk/test/MC/AArch64/dot-req.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AArch64/dot-req.s?rev=228109&r1=228108&r2=228109&view=diff
==============================================================================
--- llvm/trunk/test/MC/AArch64/dot-req.s (original)
+++ llvm/trunk/test/MC/AArch64/dot-req.s Tue Feb 3 21:10:03 2015
@@ -1,7 +1,9 @@
-// RUN: llvm-mc -triple=aarch64-none-linux-gnu -show-encoding < %s | FileCheck %s
+// RUN: llvm-mc -triple=aarch64-none-linux-gnu -show-encoding < %s 2>&1 | FileCheck %s
bar:
fred .req x5
+// CHECK-NOT: ignoring redefinition of register alias 'fred'
+ fred .req x5
mov fred, x11
.unreq fred
fred .req w6
Modified: llvm/trunk/test/MC/ARM/dot-req.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ARM/dot-req.s?rev=228109&r1=228108&r2=228109&view=diff
==============================================================================
--- llvm/trunk/test/MC/ARM/dot-req.s (original)
+++ llvm/trunk/test/MC/ARM/dot-req.s Tue Feb 3 21:10:03 2015
@@ -1,6 +1,9 @@
@ RUN: llvm-mc -triple=armv7-apple-darwin -show-encoding < %s | FileCheck %s
.syntax unified
bar:
+@ The line is duplicated on purpose, it is legal to redefine a req with
+@ the same value.
+fred .req r5
fred .req r5
mov r11, fred
.unreq fred
More information about the llvm-commits
mailing list