[llvm-commits] [dragonegg] r135903 - in /dragonegg/trunk: include/x86/dragonegg/Target.h src/Backend.cpp
Duncan Sands
baldrick at free.fr
Mon Jul 25 01:49:56 PDT 2011
Author: baldrick
Date: Mon Jul 25 03:49:56 2011
New Revision: 135903
URL: http://llvm.org/viewvc/llvm-project?rev=135903&view=rev
Log:
Port commits 135588 (evancheng), 135589 (evancheng) and 135618 (efriedma)
from llvm-gcc. Original changelog entries:
Unbreak llvm-c build.
CM_32 means default code mode.
Attempt to unbreak llvm-gcc.
Modified:
dragonegg/trunk/include/x86/dragonegg/Target.h
dragonegg/trunk/src/Backend.cpp
Modified: dragonegg/trunk/include/x86/dragonegg/Target.h
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/include/x86/dragonegg/Target.h?rev=135903&r1=135902&r2=135903&view=diff
==============================================================================
--- dragonegg/trunk/include/x86/dragonegg/Target.h (original)
+++ dragonegg/trunk/include/x86/dragonegg/Target.h Mon Jul 25 03:49:56 2011
@@ -371,33 +371,39 @@
#define LLVM_CANONICAL_ADDRESS_CONSTRAINTS "im"
/* Propagate code model setting to backend */
-#define LLVM_SET_MACHINE_OPTIONS(argvec) \
- do { \
- switch (ix86_cmodel) { \
- default: \
- sorry ("code model %<%s%> not supported yet", \
- ix86_cmodel_string); \
- break; \
- case CM_SMALL: \
- case CM_SMALL_PIC: \
- argvec.push_back("--code-model=small"); \
- break; \
- case CM_KERNEL: \
- argvec.push_back("--code-model=kernel"); \
- break; \
- case CM_MEDIUM: \
- case CM_MEDIUM_PIC: \
- argvec.push_back("--code-model=medium"); \
- break; \
- case CM_32: \
- argvec.push_back("--code-model=default"); \
- break; \
- } \
- if (TARGET_OMIT_LEAF_FRAME_POINTER) \
- argvec.push_back("--disable-non-leaf-fp-elim"); \
- \
- if (ix86_force_align_arg_pointer) \
- argvec.push_back("-force-align-stack"); \
+#define LLVM_SET_CODE_MODEL(CMModel) \
+ switch (ix86_cmodel) { \
+ default: \
+ sorry ("code model %<%s%> not supported yet", \
+ ix86_cmodel_string); \
+ break; \
+ case CM_32: \
+ CMModel = CodeModel::Default; \
+ break; \
+ case CM_SMALL: \
+ case CM_SMALL_PIC: \
+ CMModel = CodeModel::Small; \
+ break; \
+ case CM_KERNEL: \
+ CMModel = CodeModel::Kernel; \
+ break; \
+ case CM_MEDIUM: \
+ case CM_MEDIUM_PIC: \
+ CMModel = CodeModel::Medium; \
+ break; \
+ case CM_LARGE: \
+ case CM_LARGE_PIC: \
+ CMModel = CodeModel::Large; \
+ break; \
+ }
+
+#define LLVM_SET_MACHINE_OPTIONS(argvec) \
+ do { \
+ if (TARGET_OMIT_LEAF_FRAME_POINTER) \
+ argvec.push_back("--disable-non-leaf-fp-elim"); \
+ \
+ if (ix86_force_align_arg_pointer) \
+ argvec.push_back("-force-align-stack"); \
} while (0)
#endif /* DRAGONEGG_TARGET_H */
Modified: dragonegg/trunk/src/Backend.cpp
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/src/Backend.cpp?rev=135903&r1=135902&r2=135903&view=diff
==============================================================================
--- dragonegg/trunk/src/Backend.cpp (original)
+++ dragonegg/trunk/src/Backend.cpp Mon Jul 25 03:49:56 2011
@@ -415,14 +415,22 @@
FeatureStr = Features.getString();
#endif
- // The target can set LLVM_SET_RELOC_MODEL to configure the relocation
- // model used by the LLVM backend.
+ // The target can set LLVM_SET_RELOC_MODEL to configure the relocation model
+ // used by the LLVM backend.
Reloc::Model RelocModel = Reloc::Default;
#ifdef LLVM_SET_RELOC_MODEL
LLVM_SET_RELOC_MODEL(RelocModel);
#endif
+
+ // The target can set LLVM_SET_CODE_MODEL to configure the code model used
+ // used by the LLVM backend.
+ CodeModel::Model CMModel = CodeModel::Default;
+#ifdef LLVM_SET_CODE_MODEL
+ LLVM_SET_CODE_MODEL(CMModel);
+#endif
+
TheTarget = TME->createTargetMachine(TargetTriple, CPU, FeatureStr,
- RelocModel);
+ RelocModel, CMModel);
TheTarget->setMCUseCFI(flag_dwarf2_cfi_asm);
assert(TheTarget->getTargetData()->isBigEndian() == BYTES_BIG_ENDIAN);
}
More information about the llvm-commits
mailing list