Index: src/IceTargetLowering.cpp |
diff --git a/src/IceTargetLowering.cpp b/src/IceTargetLowering.cpp |
index 3bae59178d3dcf2c67a206ce7afd95ee3abf8b49..f6631559f9064a5049c842b74ba441c47da88b24 100644 |
--- a/src/IceTargetLowering.cpp |
+++ b/src/IceTargetLowering.cpp |
@@ -15,6 +15,7 @@ |
// |
//===----------------------------------------------------------------------===// |
+#include "assembler_ia32.h" |
#include "IceCfg.h" // setError() |
#include "IceCfgNode.h" |
#include "IceOperand.h" |
@@ -97,6 +98,15 @@ TargetLowering *TargetLowering::createLowering(TargetArch Target, Cfg *Func) { |
return NULL; |
} |
+Assembler *TargetLowering::createAssembler(TargetArch Target, Cfg *Func) { |
+ // These statements can be #ifdef'd to specialize the assembler |
+ // to a subset of the available targets. TODO: use CRTP. |
+ if (Target == Target_X8632) |
+ return new x86::AssemblerX86(); |
+ Func->setError("Unsupported target"); |
+ return NULL; |
+} |
+ |
void TargetLowering::doAddressOpt() { |
if (llvm::isa<InstLoad>(*Context.getCur())) |
doAddressOptLoad(); |