Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 8 Nov 2014 13:19:48 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r274286 - head/contrib/llvm/lib/MC/MCParser
Message-ID:  <201411081319.sA8DJmqm012252@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Sat Nov  8 13:19:48 2014
New Revision: 274286
URL: https://svnweb.freebsd.org/changeset/base/274286

Log:
  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
  MFC after:	3 days

Modified:
  head/contrib/llvm/lib/MC/MCParser/AsmParser.cpp

Modified: head/contrib/llvm/lib/MC/MCParser/AsmParser.cpp
==============================================================================
--- head/contrib/llvm/lib/MC/MCParser/AsmParser.cpp	Sat Nov  8 12:59:32 2014	(r274285)
+++ head/contrib/llvm/lib/MC/MCParser/AsmParser.cpp	Sat Nov  8 13:19:48 2014	(r274286)
@@ -1695,7 +1695,7 @@ bool AsmParser::expandMacro(raw_svector_
                             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_
     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_
     if (Pos == End)
       break;
 
-    if (!NParameters) {
+    if (IsDarwin && !NParameters) {
       switch (Body[Pos + 1]) {
       // $$ => $
       case '$':



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201411081319.sA8DJmqm012252>