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).