]> git.pld-linux.org Git - packages/gcc.git/blob - gcc-march-i686-fix.patch
- update to 3.3.5, rel 1
[packages/gcc.git] / gcc-march-i686-fix.patch
1 2002-08-17  H.J. Lu <hjl@gnu.org>
2
3         * calls.c (PUSH_ARGS_REVERSED): Define only if not defined.
4         * expr.c (PUSH_ARGS_REVERSED): Likewise.
5
6 2002-07-26  H.J. Lu <hjl@gnu.org>
7
8         * config/i386/i386.h (PUSH_ARGS_REVERSED): Set to 1.
9
10 --- gcc/calls.c.var     Thu Apr  4 15:28:47 2002
11 +++ gcc/calls.c Sat Aug 17 22:45:46 2002
12 @@ -46,9 +46,11 @@ Software Foundation, 59 Temple Place - S
13  
14  #ifdef PUSH_ROUNDING
15  
16 +#ifndef PUSH_ARGS_REVERSED
17  #if defined (STACK_GROWS_DOWNWARD) != defined (ARGS_GROW_DOWNWARD)
18  #define PUSH_ARGS_REVERSED  PUSH_ARGS
19  #endif
20 +#endif
21  
22  #endif
23  
24 --- gcc/config/i386/i386.h.var  Sun Jul 14 23:54:36 2002
25 +++ gcc/config/i386/i386.h      Sat Aug 17 19:03:21 2002
26 @@ -1581,6 +1581,10 @@ enum reg_class
27  
28  #define PUSH_ARGS (TARGET_PUSH_ARGS && !ACCUMULATE_OUTGOING_ARGS)
29  
30 +/* We want the stack and args grow in opposite directions, even if
31 +   PUSH_ARGS is 0.  */
32 +#define PUSH_ARGS_REVERSED 1
33 +
34  /* Offset of first parameter from the argument pointer register value.  */
35  #define FIRST_PARM_OFFSET(FNDECL) 0
36  
37 --- gcc/expr.c.var      Mon May  6 22:43:11 2002
38 +++ gcc/expr.c  Sat Aug 17 22:52:27 2002
39 @@ -54,9 +54,11 @@ Software Foundation, 59 Temple Place - S
40  
41  #ifdef PUSH_ROUNDING
42  
43 +#ifndef PUSH_ARGS_REVERSED
44  #if defined (STACK_GROWS_DOWNWARD) != defined (ARGS_GROW_DOWNWARD)
45  #define PUSH_ARGS_REVERSED     /* If it's last to first.  */
46  #endif
47 +#endif
48  
49  #endif
50  
51 2002-08-18  H.J. Lu <hjl@gnu.org>
52
53         * calls.c (store_one_arg): Remove ATTRIBUTE_UNUSED on
54         variable_size. Mark any slots used for the argument as in-use
55         only if we can't pass all arguments to a library call in
56         registers.
57
58 --- gcc/calls.c.copy    Sun Aug 18 07:35:11 2002
59 +++ gcc/calls.c Sun Aug 18 08:27:29 2002
60 @@ -4270,7 +4270,7 @@ store_one_arg (arg, argblock, flags, var
61       struct arg_data *arg;
62       rtx argblock;
63       int flags;
64 -     int variable_size ATTRIBUTE_UNUSED;
65 +     int variable_size;
66       int reg_parm_stack_space;
67  {
68    tree pval = arg->tree_value;
69 @@ -4345,14 +4345,22 @@ store_one_arg (arg, argblock, flags, var
70                   emit_move_insn (arg->save_area, stack_area);
71                 }
72             }
73 +
74 +         /* Now that we have saved any slots that will be overwritten
75 +            by this store, mark all slots this store will use.  We
76 +            must do this before we actually expand the argument since
77 +            the expansion itself may trigger library calls which might
78 +            need to use the same stack slot. We only do it if we can't
79 +            pass all arguments to a library call in registers.  */
80 +         if (arg->partial)
81 +           {
82 +             for (i = lower_bound; i < upper_bound; i++)
83 +               stack_usage_map[i] = 1;
84 +
85 +             /* Set it so that we don't do it again.  */
86 +             variable_size = 1;
87 +           }
88         }
89 -      /* Now that we have saved any slots that will be overwritten by this
90 -        store, mark all slots this store will use.  We must do this before
91 -        we actually expand the argument since the expansion itself may
92 -        trigger library calls which might need to use the same stack slot.  */
93 -      if (argblock && ! variable_size && arg->stack)
94 -       for (i = lower_bound; i < upper_bound; i++)
95 -         stack_usage_map[i] = 1;
96      }
97  
98    /* If this isn't going to be placed on both the stack and in registers,
99 @@ -4579,6 +4587,11 @@ store_one_arg (arg, argblock, flags, var
100         arg->value = arg->stack_slot;
101      }
102  
103 +  if (ACCUMULATE_OUTGOING_ARGS && !(flags & ECF_SIBCALL)
104 +      && argblock && ! variable_size && arg->stack)
105 +    for (i = lower_bound; i < upper_bound; i++)
106 +      stack_usage_map[i] = 1;
107 +
108    /* Once we have pushed something, pops can't safely
109       be deferred during the rest of the arguments.  */
110    NO_DEFER_POP;
This page took 0.032375 seconds and 3 git commands to generate.