diff --git a/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmInfo.h b/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmInfo.h --- a/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmInfo.h +++ b/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmInfo.h @@ -19,6 +19,7 @@ class SystemZMCAsmInfo : public MCAsmInfoELF { public: explicit SystemZMCAsmInfo(const Triple &TT); + bool isAcceptableChar(char C) const override; }; } // end namespace llvm diff --git a/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmInfo.cpp b/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmInfo.cpp --- a/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmInfo.cpp +++ b/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmInfo.cpp @@ -37,3 +37,10 @@ SupportsDebugInformation = true; ExceptionsType = ExceptionHandling::DwarfCFI; } + +bool SystemZMCAsmInfo::isAcceptableChar(char C) const { + if (AssemblerDialect == AD_ATT) + return MCAsmInfo::isAcceptableChar(C); + + return MCAsmInfo::isAcceptableChar(C) || C == '#'; +} diff --git a/llvm/unittests/MC/SystemZ/SystemZAsmLexerTest.cpp b/llvm/unittests/MC/SystemZ/SystemZAsmLexerTest.cpp --- a/llvm/unittests/MC/SystemZ/SystemZAsmLexerTest.cpp +++ b/llvm/unittests/MC/SystemZ/SystemZAsmLexerTest.cpp @@ -48,6 +48,7 @@ AllowHashAtStartOfIdentifier = Value; } void setAllowDotIsPC(bool Value) { DotIsPC = Value; } + void setAssemblerDialect(unsigned Value) { AssemblerDialect = Value; } }; // Setup a testing class that the GTest framework can call. @@ -734,4 +735,19 @@ AsmToken::Error, AsmToken::EndOfStatement, AsmToken::Eof}); lexAndCheckTokens(AsmStr, ExpectedTokens); } + +TEST_F(SystemZAsmLexerTest, CheckPrintAcceptableSymbol) { + std::string AsmStr = "ab13_$.@"; + EXPECT_EQ(true, MUPMAI->isValidUnquotedName(AsmStr)); + AsmStr += "#"; + EXPECT_EQ(false, MUPMAI->isValidUnquotedName(AsmStr)); +} + +TEST_F(SystemZAsmLexerTest, CheckPrintAcceptableSymbol2) { + MUPMAI->setAssemblerDialect(1); + std::string AsmStr = "ab13_$.@"; + EXPECT_EQ(true, MUPMAI->isValidUnquotedName(AsmStr)); + AsmStr += "#"; + EXPECT_EQ(true, MUPMAI->isValidUnquotedName(AsmStr)); +} } // end anonymous namespace