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/IceTargetLowering.h b/src/IceTargetLowering.h
index 32fdc44..ee0de8f 100644
--- a/src/IceTargetLowering.h
+++ b/src/IceTargetLowering.h
@@ -28,6 +28,18 @@
namespace Ice {
+// 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)
+
/// LoweringContext makes it easy to iterate through non-deleted instructions in
/// a node, and insert new (lowered) instructions at the current point. Along
/// with the instruction list container and associated iterators, it holds the