This is allowed by GAS and seems correct.
Differential Revision: https://reviews.llvm.org/D55439
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352414
91177308-0d34-0410-b5e6-
96231b3b80d8
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;
}
.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
.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