------- Comment #17 from geoffk at geoffk dot org 2008-02-13 07:50 ------- Subject: Re: [4.3 Regression] gcc.c-torture/execute/va-arg-25.c:32: internal compiler error: in expand_call, at calls.c:2785
On 12/02/2008, at 10:41 PM, hjl dot tools at gmail dot com wrote: > ------- Comment #16 from hjl dot tools at gmail dot com 2008-02-13 > 06:41 ------- > (In reply to comment #15) >> Subject: Re: [4.3 Regression] gcc.c-torture/execute/va-arg-25.c: >> 32: internal >> compiler error: in expand_call, at calls.c:2785 >> >> STACK_BOUNDARY >>>> >>> is more or less "natural" hardware stack boundary, which should be >>> the size of pointer. >> >> That is not what is documented and if you are proposing a change, I >> do >> not see how your proposal is useful. >> >> The distinguishing property of STACK_BOUNDARY is that the compiler is >> allowed to rely on the stack being aligned by it. There is no notion >> of "hardware" or "pointer" or "natural" involved; either the stack is >> always aligned on call boundaries or it is not. >> > > Here is our proposal: > > http://gcc.gnu.org/ml/gcc/2007-12/msg00567.html It is to be expected that this proposal usually has no effect on Darwin, because the problem it is trying to solve, of local variables that require alignment greater than the default, does not usually exist on Darwin. Under the definitions in your proposal, on Darwin, STACK_BOUNDARY should be 128, because 128 is the "minimum stack boundary" on Darwin, and this is also the value "preferred by hardware". There is a contradiction in your proposal in which it says that it is "preferred by hardware" but also the "minimum stack boundary"; on many x86 platforms, the hardware would really prefer 128 bits, but the ABI actually specifies a smaller value. I think your proposal would be more clear if it left the definition of STACK_BOUNDARY alone. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34621