[PATCH] D36092: [MIR] Print target specific constant pools
Diana Picus via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 31 08:07:22 PDT 2017
rovka created this revision.
Herald added subscribers: kristof.beyls, igorb, aemerson.
This should enable us to test the generation of target-specific constant
pools, e.g. for ARM:
constants:
- id: 0 value: 'g(GOT_PREL)-(LPC0+8-.)' alignment: 4
I intend to use this to test PIC support in GlobalISel for ARM.
I don't really know how to test it outside of that context, since the
existing MIR tests usually rely on parser support as well, and that
seems a bit trickier to add. I don't have an immediate use for that, but
I can put in the extra effort if people point me in the right direction
with it (i.e. where would we put the target-specific parsing?
Piggy-back it on the Subtarget, maybe?). Alternatively, I could try to
add a unit test, but the setup for that seems rather convoluted and I'm
not sure it's the best way to go about this.
Thoughts?
https://reviews.llvm.org/D36092
Files:
lib/CodeGen/MIRPrinter.cpp
Index: lib/CodeGen/MIRPrinter.cpp
===================================================================
--- lib/CodeGen/MIRPrinter.cpp
+++ lib/CodeGen/MIRPrinter.cpp
@@ -458,17 +458,19 @@
const MachineConstantPool &ConstantPool) {
unsigned ID = 0;
for (const MachineConstantPoolEntry &Constant : ConstantPool.getConstants()) {
- // TODO: Serialize target specific constant pool entries.
- if (Constant.isMachineConstantPoolEntry())
- llvm_unreachable("Can't print target specific constant pool entries yet");
-
- yaml::MachineConstantPoolValue YamlConstant;
std::string Str;
raw_string_ostream StrOS(Str);
- Constant.Val.ConstVal->printAsOperand(StrOS);
+ if (Constant.isMachineConstantPoolEntry()) {
+ Constant.Val.MachineCPVal->print(StrOS);
+ } else {
+ Constant.Val.ConstVal->printAsOperand(StrOS);
+ }
+
+ yaml::MachineConstantPoolValue YamlConstant;
YamlConstant.ID = ID++;
YamlConstant.Value = StrOS.str();
YamlConstant.Alignment = Constant.getAlignment();
+
MF.Constants.push_back(YamlConstant);
}
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D36092.108927.patch
Type: text/x-patch
Size: 1111 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170731/720bd850/attachment.bin>
More information about the llvm-commits
mailing list