[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