[llvm] r352414 - [MC] Do not consider .ifdef/.ifndef as a use

Scott Linder via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 28 11:32:09 PST 2019


Author: scott.linder
Date: Mon Jan 28 11:32:08 2019
New Revision: 352414

URL: http://llvm.org/viewvc/llvm-project?rev=352414&view=rev
Log:
[MC] Do not consider .ifdef/.ifndef as a use

This is allowed by GAS and seems correct.

Differential Revision: https://reviews.llvm.org/D55439

Modified:
    llvm/trunk/lib/MC/MCParser/AsmParser.cpp
    llvm/trunk/test/MC/AsmParser/ifdef.s
    llvm/trunk/test/MC/AsmParser/ifndef.s

Modified: llvm/trunk/lib/MC/MCParser/AsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCParser/AsmParser.cpp?rev=352414&r1=352413&r2=352414&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCParser/AsmParser.cpp (original)
+++ llvm/trunk/lib/MC/MCParser/AsmParser.cpp Mon Jan 28 11:32:08 2019
@@ -5038,9 +5038,9 @@ bool AsmParser::parseDirectiveIfdef(SMLo
     MCSymbol *Sym = getContext().lookupSymbol(Name);
 
     if (expect_defined)
-      TheCondState.CondMet = (Sym && !Sym->isUndefined());
+      TheCondState.CondMet = (Sym && !Sym->isUndefined(false));
     else
-      TheCondState.CondMet = (!Sym || Sym->isUndefined());
+      TheCondState.CondMet = (!Sym || Sym->isUndefined(false));
     TheCondState.Ignore = !TheCondState.CondMet;
   }
 

Modified: llvm/trunk/test/MC/AsmParser/ifdef.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AsmParser/ifdef.s?rev=352414&r1=352413&r2=352414&view=diff
==============================================================================
--- llvm/trunk/test/MC/AsmParser/ifdef.s (original)
+++ llvm/trunk/test/MC/AsmParser/ifdef.s Mon Jan 28 11:32:08 2019
@@ -27,3 +27,17 @@ defined:
 .else
 	.byte 1
 .endif
+
+# .ifdef directive does not count as a use, so ensure redefinition is permitted
+.set var, 1
+.ifdef var
+	.set var, 2
+.else
+	.set var, 3
+.endif
+# CHECK: .byte 2
+.byte var
+
+.set var, 4
+# CHECK: .byte 4
+.byte var

Modified: llvm/trunk/test/MC/AsmParser/ifndef.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AsmParser/ifndef.s?rev=352414&r1=352413&r2=352414&view=diff
==============================================================================
--- llvm/trunk/test/MC/AsmParser/ifndef.s (original)
+++ llvm/trunk/test/MC/AsmParser/ifndef.s Mon Jan 28 11:32:08 2019
@@ -27,3 +27,17 @@ defined:
 .else
 	.byte 0
 .endif
+
+# .ifndef directive does not count as a use, so ensure redefinition is permitted
+.set var, 1
+.ifndef var
+	.set var, 2
+.else
+	.set var, 3
+.endif
+# CHECK: .byte 3
+.byte var
+
+.set var, 4
+# CHECK: .byte 4
+.byte var




More information about the llvm-commits mailing list