public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug middle-end/36859]  New: Caller/callee mismatch for vararg on stack
@ 2008-07-16 21:25 hjl dot tools at gmail dot com
  2008-07-17  5:26 ` [Bug middle-end/36859] " hjl dot tools at gmail dot com
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: hjl dot tools at gmail dot com @ 2008-07-16 21:25 UTC (permalink / raw)
  To: gcc-bugs

locate_and_pad_parm never align parameters on stack for
callers. It only caps parameter alignment to 
PREFERRED_STACK_BOUNDARY.  But std_gimplify_va_arg_expr
tries to align stack for callee:

  /* va_list pointer is aligned to PARM_BOUNDARY.  If argument actually
     requires greater alignment, we must perform dynamic alignment.  */
  if (boundary > align 
      && !integer_zerop (TYPE_SIZE (type)))
    {
      t = build2 (MODIFY_EXPR, TREE_TYPE (valist), valist_tmp,
                  fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (valist),
                               valist_tmp, size_int (boundary - 1))); 
      gimplify_and_add (t, pre_p);

      t = fold_convert (sizetype, valist_tmp);
      t = build2 (MODIFY_EXPR, TREE_TYPE (valist), valist_tmp,
                  fold_convert (TREE_TYPE (valist),
                                fold_build2 (BIT_AND_EXPR, sizetype, t,
                                             size_int (-boundary))));
      gimplify_and_add (t, pre_p);
    }
  else
    boundary = align;

We have a mismatch between caller and callee. I have a testcase for ia32.
But it depends on PR 36858.


-- 
           Summary: Caller/callee mismatch for vararg on stack
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: hjl dot tools at gmail dot com
 BugsThisDependsOn: 36858


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36859


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug middle-end/36859] Caller/callee mismatch for vararg on stack
  2008-07-16 21:25 [Bug middle-end/36859] New: Caller/callee mismatch for vararg on stack hjl dot tools at gmail dot com
@ 2008-07-17  5:26 ` hjl dot tools at gmail dot com
  2008-07-18 15:49 ` hjl at gcc dot gnu dot org
  2008-07-27 19:09 ` hjl dot tools at gmail dot com
  2 siblings, 0 replies; 4+ messages in thread
From: hjl dot tools at gmail dot com @ 2008-07-17  5:26 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from hjl dot tools at gmail dot com  2008-07-17 05:25 -------
A patch is posted at

http://gcc.gnu.org/ml/gcc-patches/2008-07/msg01247.html


-- 

hjl dot tools at gmail dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                URL|                            |http://gcc.gnu.org/ml/gcc-
                   |                            |patches/2008-
                   |                            |07/msg01247.html


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36859


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug middle-end/36859] Caller/callee mismatch for vararg on stack
  2008-07-16 21:25 [Bug middle-end/36859] New: Caller/callee mismatch for vararg on stack hjl dot tools at gmail dot com
  2008-07-17  5:26 ` [Bug middle-end/36859] " hjl dot tools at gmail dot com
@ 2008-07-18 15:49 ` hjl at gcc dot gnu dot org
  2008-07-27 19:09 ` hjl dot tools at gmail dot com
  2 siblings, 0 replies; 4+ messages in thread
From: hjl at gcc dot gnu dot org @ 2008-07-18 15:49 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from hjl at gcc dot gnu dot org  2008-07-18 15:48 -------
Subject: Bug 36859

Author: hjl
Date: Fri Jul 18 15:48:04 2008
New Revision: 137955

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=137955
Log:
gcc/

2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>

        PR middle-end/36859
        * builtins.c (std_gimplify_va_arg_expr): Limit alignment to
        PREFERRED_STACK_BOUNDARY.
        * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.

testsuite/

2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>

        PR middle-end/36859
        * gcc.target/i386/vararg-2.c: New.

Added:
    trunk/gcc/testsuite/gcc.target/i386/vararg-2.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/builtins.c
    trunk/gcc/config/i386/i386.c
    trunk/gcc/testsuite/ChangeLog


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36859


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug middle-end/36859] Caller/callee mismatch for vararg on stack
  2008-07-16 21:25 [Bug middle-end/36859] New: Caller/callee mismatch for vararg on stack hjl dot tools at gmail dot com
  2008-07-17  5:26 ` [Bug middle-end/36859] " hjl dot tools at gmail dot com
  2008-07-18 15:49 ` hjl at gcc dot gnu dot org
@ 2008-07-27 19:09 ` hjl dot tools at gmail dot com
  2 siblings, 0 replies; 4+ messages in thread
From: hjl dot tools at gmail dot com @ 2008-07-27 19:09 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from hjl dot tools at gmail dot com  2008-07-27 19:09 -------
Fixed.


-- 

hjl dot tools at gmail dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|                            |FIXED


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36859


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2008-07-27 19:09 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-07-16 21:25 [Bug middle-end/36859] New: Caller/callee mismatch for vararg on stack hjl dot tools at gmail dot com
2008-07-17  5:26 ` [Bug middle-end/36859] " hjl dot tools at gmail dot com
2008-07-18 15:49 ` hjl at gcc dot gnu dot org
2008-07-27 19:09 ` hjl dot tools at gmail dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).