[llvm-commits] [llvm-gcc-4.2] r72895 - in /llvm-gcc-4.2/trunk/gcc: config/i386/llvm-i386-target.h llvm-backend.cpp

Devang Patel dpatel at apple.com
Thu Jun 4 15:07:30 PDT 2009


Author: dpatel
Date: Thu Jun  4 17:07:30 2009
New Revision: 72895

URL: http://llvm.org/viewvc/llvm-project?rev=72895&view=rev
Log:
Set Attribute::NoRedZone attribute properly.

Modified:
    llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h
    llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp

Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h?rev=72895&r1=72894&r2=72895&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h (original)
+++ llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h Thu Jun  4 17:07:30 2009
@@ -89,9 +89,9 @@
     }                                                           \
   }
 
-#define LLVM_SET_ARCH_OPTIONS(argvec)                           \
+#define LLVM_SET_RED_ZONE_FLAG(disable_red_zone)                \
   if (TARGET_NO_RED_ZONE)                                       \
-    argvec.push_back("--disable-red-zone");
+    disable_red_zone = 1;
 
 #ifdef LLVM_ABI_H
 

Modified: llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp?rev=72895&r1=72894&r2=72895&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp Thu Jun  4 17:07:30 2009
@@ -78,6 +78,9 @@
 // Non-zero if libcalls should not be simplified.
 int flag_no_simplify_libcalls;
 
+// Non-zer if red-zone is disabled.
+static int flag_disable_red_zone = 0;
+
 // Global state for the LLVM backend.
 Module *TheModule = 0;
 DebugInfo *TheDebugInfo = 0;
@@ -327,8 +330,8 @@
 
   // Allow targets to specify PIC options and other stuff to the corresponding
   // LLVM backends.
-#ifdef LLVM_SET_ARCH_OPTIONS
-  LLVM_SET_ARCH_OPTIONS(Args);
+#ifdef LLVM_SET_RED_ZONE_FLAG
+  LLVM_SET_RED_ZONE_FLAG(flag_disable_red_zone)
 #endif
 #ifdef LLVM_SET_TARGET_OPTIONS
   LLVM_SET_TARGET_OPTIONS(Args);
@@ -456,6 +459,10 @@
 void performLateBackendInitialization(void) {
   // The Ada front-end sets flag_exceptions only after processing the file.
   ExceptionHandling = flag_exceptions;
+  for (Module::iterator I = TheModule->begin(), E = TheModule->end();
+       I != E; ++I)
+    if (!I->isDeclaration() && flag_disable_red_zone)
+      I->addFnAttr(Attribute::NoRedZone);
 }
 
 void llvm_lang_dependent_init(const char *Name) {





More information about the llvm-commits mailing list