mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-20 04:55:37 +00:00
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228109 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
8fa9947e4d
commit
1638ca5493
@ -4132,7 +4132,7 @@ bool AArch64AsmParser::parseDirectiveReq(StringRef Name, SMLoc L) {
|
||||
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;
|
||||
|
@ -9010,7 +9010,7 @@ bool ARMAsmParser::parseDirectiveReq(StringRef Name, SMLoc L) {
|
||||
|
||||
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;
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user