[PATCH] D76719: [MC] Support case insensitive macros
Jian Cai via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 24 11:49:14 PDT 2020
jcai19 created this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
jcai19 added reviewers: MaskRay, reames, skan.
jcai19 added subscribers: manojgupta, llozano.
GNU as allows us to specify a macro and then expand with case
insensitive calls. Add this support to match GNU.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D76719
Files:
llvm/include/llvm/MC/MCContext.h
llvm/test/MC/X86/macro_case.s
Index: llvm/test/MC/X86/macro_case.s
===================================================================
--- /dev/null
+++ llvm/test/MC/X86/macro_case.s
@@ -0,0 +1,10 @@
+# RUN: llvm-mc -filetype=obj -triple=i386 %s -o /dev/null
+
+.macro mySum from=0, to=5
+ .long \from
+ .if \to-\from
+ mySum "(\from+1)",\to
+ .endif
+ .endm
+
+Mysum 0,5
Index: llvm/include/llvm/MC/MCContext.h
===================================================================
--- llvm/include/llvm/MC/MCContext.h
+++ llvm/include/llvm/MC/MCContext.h
@@ -687,15 +687,15 @@
const Twine &Msg);
const MCAsmMacro *lookupMacro(StringRef Name) {
- StringMap<MCAsmMacro>::iterator I = MacroMap.find(Name);
+ StringMap<MCAsmMacro>::iterator I = MacroMap.find(Name.lower());
return (I == MacroMap.end()) ? nullptr : &I->getValue();
}
void defineMacro(StringRef Name, MCAsmMacro Macro) {
- MacroMap.insert(std::make_pair(Name, std::move(Macro)));
+ MacroMap.insert(std::make_pair(Name.lower(), std::move(Macro)));
}
- void undefineMacro(StringRef Name) { MacroMap.erase(Name); }
+ void undefineMacro(StringRef Name) { MacroMap.erase(Name.lower()); }
};
} // end namespace llvm
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D76719.252379.patch
Type: text/x-patch
Size: 1302 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200324/ca1243dc/attachment-0001.bin>
More information about the llvm-commits
mailing list