[clang] [llvm] [X86][AsmParser] Fix MS inline asm label mismatch with offset operator (PR #199552)
via cfe-commits
cfe-commits at lists.llvm.org
Wed Jun 3 01:54:45 PDT 2026
================
@@ -2317,8 +2317,12 @@ bool X86AsmParser::ParseIntelInlineAsmIdentifier(
if (!IsParsingOffsetOperator)
InstInfo->AsmRewrites->emplace_back(AOK_Label, Loc, Identifier.size(),
InternalName);
- else
- Identifier = InternalName;
+ else {
+ // When parsing the offset operator, we need to prepend
+ // PrivateLabelPrefix to match the AOK_Label rewrite at label definition.
+ StringRef Prefix = getContext().getAsmInfo().getPrivateLabelPrefix();
+ Identifier = getContext().getOrCreateSymbol(Twine(Prefix) + InternalName)->getName();
----------------
sonyps5201314 wrote:
> If you use the correct getOrCreate you shouldn't need to manually add the prefix?
Upon investigation, `MCContext::getOrCreateSymbol()` does not automatically add a prefix (it simply looks up or creates the symbol using the exact name provided). Therefore, we still need to manually prepend the prefix. The advantage of using `getOrCreateSymbol(Prefix + InternalName)` is that it lets the MC layer know the symbol is referenced.
https://github.com/llvm/llvm-project/pull/199552
More information about the cfe-commits
mailing list