Add llvm patch corresponding to r274286.
This commit is contained in:
parent
4dbd7c5dc4
commit
9e9c431823
@ -0,0 +1,55 @@
|
||||
Pull in r201784 from upstream llvm trunk (by Benjamin Kramer):
|
||||
|
||||
AsmParser: Disable Darwin-style macro argument expansion on non-darwin targets.
|
||||
|
||||
There is code in the wild that relies on $0 not being expanded.
|
||||
|
||||
This fixes some cases of using $ signs in literals being incorrectly
|
||||
assembled.
|
||||
|
||||
Reported by: Richard Henderson
|
||||
Upstream PR: http://llvm.org/PR21500
|
||||
|
||||
Introduced here: http://svnweb.freebsd.org/changeset/base/274286
|
||||
|
||||
Index: lib/MC/MCParser/AsmParser.cpp
|
||||
===================================================================
|
||||
--- lib/MC/MCParser/AsmParser.cpp
|
||||
+++ lib/MC/MCParser/AsmParser.cpp
|
||||
@@ -1695,7 +1695,7 @@ bool AsmParser::expandMacro(raw_svector_ostream &O
|
||||
const MCAsmMacroParameters &Parameters,
|
||||
const MCAsmMacroArguments &A, const SMLoc &L) {
|
||||
unsigned NParameters = Parameters.size();
|
||||
- if (NParameters != 0 && NParameters != A.size())
|
||||
+ if ((!IsDarwin || NParameters != 0) && NParameters != A.size())
|
||||
return Error(L, "Wrong number of arguments");
|
||||
|
||||
// A macro without parameters is handled differently on Darwin:
|
||||
@@ -1705,7 +1705,7 @@ bool AsmParser::expandMacro(raw_svector_ostream &O
|
||||
std::size_t End = Body.size(), Pos = 0;
|
||||
for (; Pos != End; ++Pos) {
|
||||
// Check for a substitution or escape.
|
||||
- if (!NParameters) {
|
||||
+ if (IsDarwin && !NParameters) {
|
||||
// This macro has no parameters, look for $0, $1, etc.
|
||||
if (Body[Pos] != '$' || Pos + 1 == End)
|
||||
continue;
|
||||
@@ -1728,7 +1728,7 @@ bool AsmParser::expandMacro(raw_svector_ostream &O
|
||||
if (Pos == End)
|
||||
break;
|
||||
|
||||
- if (!NParameters) {
|
||||
+ if (IsDarwin && !NParameters) {
|
||||
switch (Body[Pos + 1]) {
|
||||
// $$ => $
|
||||
case '$':
|
||||
Index: test/MC/AsmParser/exprs.s
|
||||
===================================================================
|
||||
--- test/MC/AsmParser/exprs.s
|
||||
+++ test/MC/AsmParser/exprs.s
|
||||
@@ -1,4 +1,4 @@
|
||||
-// RUN: llvm-mc -triple i386-unknown-unknown %s > %t
|
||||
+// RUN: llvm-mc -triple i386-apple-darwin %s
|
||||
|
||||
.macro check_expr
|
||||
.if ($0) != ($1)
|
Loading…
x
Reference in New Issue
Block a user