Index: src/IceTargetLowering.cpp |
diff --git a/src/IceTargetLowering.cpp b/src/IceTargetLowering.cpp |
index 93b48844f41f828673964af1e2164a8fd21a30f4..22f698acd6d8d0874c42241c415a9fad64b5a2d2 100644 |
--- a/src/IceTargetLowering.cpp |
+++ b/src/IceTargetLowering.cpp |
@@ -80,15 +80,10 @@ TargetLowering::TargetLowering(Cfg *Func) |
std::unique_ptr<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. |
- // TODO(jvoung): use SZTargets.def (rename AssemblerX86 -> AssemblerX8632), |
- // and make the namespaces consistent. |
- if (Target == Target_X8632) |
- return std::unique_ptr<Assembler>(new x86::AssemblerX86()); |
- |
- if (Target == Target_ARM32) |
- return std::unique_ptr<Assembler>(new AssemblerARM32()); |
+#define SUBZERO_TARGET(X) \ |
+ if (Target == Target_##X) \ |
+ return std::unique_ptr<Assembler>(new X::Assembler##X()); |
+#include "llvm/Config/SZTargets.def" |
Func->setError("Unsupported target assembler"); |
return nullptr; |