Start incorporating the ARM integrated assembler.
Extends the ARM32 assembler to be able to generate a trivial function
footprint using the -filetype=iasm option.
Also does a couple of cleanups:
1) Move UnimplementedError macro to common location so that it can be
used by everyone.
2) Add a GlobalContext argument to the assembler, so that it can
look at flags etc.
BUG= https://code.google.com/p/nativeclient/issues/detail?id=4334
R=stichnot@chromium.org
Review URL: https://codereview.chromium.org/1397933002 .
diff --git a/src/IceTargetLoweringARM32.cpp b/src/IceTargetLoweringARM32.cpp
index 2674190..2615b36 100644
--- a/src/IceTargetLoweringARM32.cpp
+++ b/src/IceTargetLoweringARM32.cpp
@@ -37,18 +37,6 @@
namespace {
-// UnimplementedError is defined as a macro so that we can get actual line
-// numbers.
-#define UnimplementedError(Flags) \
- do { \
- if (!static_cast<const ClFlags &>(Flags).getSkipUnimplemented()) { \
- /* Use llvm_unreachable instead of report_fatal_error, which gives \
- better stack traces. */ \
- llvm_unreachable("Not yet implemented"); \
- abort(); \
- } \
- } while (0)
-
// The following table summarizes the logic for lowering the icmp instruction
// for i32 and narrower types. Each icmp condition has a clear mapping to an
// ARM32 conditional move instruction.
@@ -3871,16 +3859,13 @@
case FT_Elf:
UnimplementedError(Ctx->getFlags());
break;
- case FT_Asm: {
+ case FT_Asm:
+ case FT_Iasm: {
OstreamLocker L(Ctx);
emitConstantPool<float>(Ctx);
emitConstantPool<double>(Ctx);
break;
}
- case FT_Iasm: {
- UnimplementedError(Ctx->getFlags());
- break;
- }
}
}
@@ -3895,7 +3880,7 @@
// Already emitted from Cfg
break;
case FT_Iasm: {
- UnimplementedError(Ctx->getFlags());
+ // TODO(kschimpf): Fill this in when we get more information.
break;
}
}