OSDN Git Service

2008-05-09 H.J. Lu <hongjiu.lu@intel.com>
authorhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 10 May 2008 00:41:39 +0000 (00:41 +0000)
committerhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 10 May 2008 00:41:39 +0000 (00:41 +0000)
* calls.c (expand_call): Don't use callgraph to increase
preferred_stack_boundary.

* cgraph.h (cgraph_rtl_info): Use unsigned on
preferred_incoming_stack_boundary.

* final.c (rest_of_clean_state): Use unsigned on
preferred_stack_boundary.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@135134 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/calls.c
gcc/cgraph.h
gcc/final.c

index 3d1e78a..d9cb326 100644 (file)
@@ -1,3 +1,14 @@
+2008-05-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * calls.c (expand_call): Don't use callgraph to increase
+       preferred_stack_boundary.
+
+       * cgraph.h (cgraph_rtl_info): Use unsigned on
+       preferred_incoming_stack_boundary.
+
+       * final.c (rest_of_clean_state): Use unsigned on
+       preferred_stack_boundary.
+
 2008-05-09  Tom Tromey  <tromey@redhat.com>
 
        PR preprocessor/22231:
 2008-05-09  Tom Tromey  <tromey@redhat.com>
 
        PR preprocessor/22231:
index bbb9b76..ac83982 100644 (file)
@@ -2109,7 +2109,14 @@ expand_call (tree exp, rtx target, int ignore)
   if (fndecl)
     {
       struct cgraph_rtl_info *i = cgraph_rtl_info (fndecl);
   if (fndecl)
     {
       struct cgraph_rtl_info *i = cgraph_rtl_info (fndecl);
-      if (i && i->preferred_incoming_stack_boundary)
+      /* Without automatic stack alignment, we can't increase preferred
+        stack boundary.  With automatic stack alignment, it is
+        unnecessary since unless we can guarantee that all callers will
+        align the outgoing stack properly, callee has to align its
+        stack anyway.  */
+      if (i
+         && i->preferred_incoming_stack_boundary
+         && i->preferred_incoming_stack_boundary < preferred_stack_boundary)
        preferred_stack_boundary = i->preferred_incoming_stack_boundary;
     }
 
        preferred_stack_boundary = i->preferred_incoming_stack_boundary;
     }
 
index 3b65dc8..97b5e1f 100644 (file)
@@ -118,7 +118,7 @@ struct cgraph_global_info GTY(())
 
 struct cgraph_rtl_info GTY(())
 {
 
 struct cgraph_rtl_info GTY(())
 {
-   int preferred_incoming_stack_boundary;
+   unsigned int preferred_incoming_stack_boundary;
 };
 
 /* The cgraph data structure.
 };
 
 /* The cgraph data structure.
index ccef70f..b318581 100644 (file)
@@ -4239,7 +4239,7 @@ rest_of_clean_state (void)
 
   if (targetm.binds_local_p (current_function_decl))
     {
 
   if (targetm.binds_local_p (current_function_decl))
     {
-      int pref = crtl->preferred_stack_boundary;
+      unsigned int pref = crtl->preferred_stack_boundary;
       if (crtl->stack_alignment_needed > crtl->preferred_stack_boundary)
         pref = crtl->stack_alignment_needed;
       cgraph_rtl_info (current_function_decl)->preferred_incoming_stack_boundary
       if (crtl->stack_alignment_needed > crtl->preferred_stack_boundary)
         pref = crtl->stack_alignment_needed;
       cgraph_rtl_info (current_function_decl)->preferred_incoming_stack_boundary