public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/38395]  New: emit_library_call_value_1 calls emit_push_insn() with type=NULL_TREE
@ 2008-12-04 10:23 jon at beniston dot com
  2008-12-23 23:31 ` [Bug middle-end/38395] " pinskia at gcc dot gnu dot org
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: jon at beniston dot com @ 2008-12-04 10:23 UTC (permalink / raw)
  To: gcc-bugs

emit_library_call_value_1() in calls.c can call emit_push_insn() with
type=NULL_TREE and mode != BLKMode

If STRICT_ALIGNMENT is defined for the target, then, emit_push_insn() will call
assign_temp (see about 40 lines into the function), passing NULL_TREE as the
first param. This results in a SEGFAULT as assign_temp calls DECL_P on
NULL_TREE.


-- 
           Summary: emit_library_call_value_1 calls emit_push_insn() with
                    type=NULL_TREE
           Product: gcc
           Version: 4.3.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: jon at beniston dot com
GCC target triplet: Targets with STRICT_ALIGNMENT defined


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


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

* [Bug middle-end/38395] emit_library_call_value_1 calls emit_push_insn() with type=NULL_TREE
  2008-12-04 10:23 [Bug c/38395] New: emit_library_call_value_1 calls emit_push_insn() with type=NULL_TREE jon at beniston dot com
@ 2008-12-23 23:31 ` pinskia at gcc dot gnu dot org
  2008-12-23 23:34 ` pinskia at gcc dot gnu dot org
  2008-12-24 18:23 ` jon at beniston dot com
  2 siblings, 0 replies; 4+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2008-12-23 23:31 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from pinskia at gcc dot gnu dot org  2008-12-23 23:30 -------
          emit_push_insn (val, mode, NULL_TREE, NULL_RTX, PARM_BOUNDARY,
                          partial, reg, 0, argblock,
                          GEN_INT (argvec[argnum].locate.offset.constant),
                          reg_parm_stack_space,
                          ARGS_SIZE_RTX (argvec[argnum].locate.alignment_pad));

This only causes an issue if:
      enum machine_mode mode = argvec[argnum].mode;

is going to be BLKmode or PARM_BOUNDARY < GET_MODE_ALIGNMENT (mode).


-- 


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


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

* [Bug middle-end/38395] emit_library_call_value_1 calls emit_push_insn() with type=NULL_TREE
  2008-12-04 10:23 [Bug c/38395] New: emit_library_call_value_1 calls emit_push_insn() with type=NULL_TREE jon at beniston dot com
  2008-12-23 23:31 ` [Bug middle-end/38395] " pinskia at gcc dot gnu dot org
@ 2008-12-23 23:34 ` pinskia at gcc dot gnu dot org
  2008-12-24 18:23 ` jon at beniston dot com
  2 siblings, 0 replies; 4+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2008-12-23 23:34 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from pinskia at gcc dot gnu dot org  2008-12-23 23:32 -------
So the question comes what target has a mode where STRICT_ALIGNMENT is going to
be true and the alignment of the stack is going to be less than the alignment
of that mode?

I think this is invalid.  Now x86 has a mode who's alignment is less than
PARM_BOUNDARY but that is because the ABI was set in stone before those
registers was added.

Do you have a target which this effects?  Is there a reason why the stack
alignment is less than the largest required alignment of the modes?


-- 


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


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

* [Bug middle-end/38395] emit_library_call_value_1 calls emit_push_insn() with type=NULL_TREE
  2008-12-04 10:23 [Bug c/38395] New: emit_library_call_value_1 calls emit_push_insn() with type=NULL_TREE jon at beniston dot com
  2008-12-23 23:31 ` [Bug middle-end/38395] " pinskia at gcc dot gnu dot org
  2008-12-23 23:34 ` pinskia at gcc dot gnu dot org
@ 2008-12-24 18:23 ` jon at beniston dot com
  2 siblings, 0 replies; 4+ messages in thread
From: jon at beniston dot com @ 2008-12-24 18:23 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from jon at beniston dot com  2008-12-24 18:21 -------
This is a port to a new target I am working on, so thanks for investigating.

Are you saying that PARAM_BOUNDARY and STACK_BOUNDARY must be >=
BIGGEST_ALIGNMENT? 

Looking through the other ports it appears this may not be the case for m68k
(depending upon command line options) and also the score port.

However, for the port I'm currently updating, I think I can reduce the size of
BIGGEST_ALIGNMENT to match STACK_BOUNDARY and PARAM_BOUNDARY. Thanks.


-- 


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


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

end of thread, other threads:[~2008-12-24 18:23 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-12-04 10:23 [Bug c/38395] New: emit_library_call_value_1 calls emit_push_insn() with type=NULL_TREE jon at beniston dot com
2008-12-23 23:31 ` [Bug middle-end/38395] " pinskia at gcc dot gnu dot org
2008-12-23 23:34 ` pinskia at gcc dot gnu dot org
2008-12-24 18:23 ` jon at beniston 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).