This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/66891] [6 Regression] ICE in expand_call, at calls.c:3407
- From: "ubizjak at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 16 Jul 2015 08:24:33 +0000
- Subject: [Bug rtl-optimization/66891] [6 Regression] ICE in expand_call, at calls.c:3407
- Auto-submitted: auto-generated
- References: <bug-66891-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66891
UroÅ Bizjak <ubizjak at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
Assignee|unassigned at gcc dot gnu.org |ubizjak at gmail dot com
--- Comment #2 from UroÅ Bizjak <ubizjak at gmail dot com> ---
Fun with global variables ...
Patch in testing:
--cut here--
Index: calls.c
===================================================================
--- calls.c (revision 225857)
+++ calls.c (working copy)
@@ -3144,6 +3144,10 @@ expand_call (tree exp, rtx target, int ignore)
compute_argument_addresses (args, argblock, num_actuals);
+ /* Stack is properly aligned, pops can't safely be deferred during
+ the evaluation of the arguments. */
+ NO_DEFER_POP;
+
/* Precompute all register parameters. It isn't safe to compute
anything once we have started filling any specific hard regs.
TLS symbols sometimes need a call to resolve. Precompute
@@ -3151,6 +3155,8 @@ expand_call (tree exp, rtx target, int ignore)
to avoid unaligned stack in the called function. */
precompute_register_parameters (num_actuals, args, ®_parm_seen);
+ OK_DEFER_POP;
+
/* Perform stack alignment before the first push (the last arg). */
if (argblock == 0
&& adjusted_args_size.constant > reg_parm_stack_space
--cut here--