[Bug middle-end/45234] [4.4/4.5/4.6 Regression] ICE in expand_call, at calls.c:2845 when passing aligned function argument from unaligned stack after alloca
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45234 --- Comment #24 from Jakub Jelinek jakub at gcc dot gnu.org 2010-09-24 14:37:06 UTC --- Author: jakub Date: Fri Sep 24 14:37:02 2010 New Revision: 164593 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=164593 Log: PR middle-end/45234 * rtl.h (enum global_rtl_index): Add GR_VIRTUAL_PREFERRED_STACK_BOUNDARY. (LAST_VIRTUAL_POINTER_REGISTER): Define. (virtual_preferred_stack_boundary_rtx, VIRTUAL_PREFERRED_STACK_BOUNDARY_REGNUM): Define. (LAST_VIRTUAL_REGISTER): Increase by one. (REGNO_PTR_FRAME_P): Use LAST_VIRTUAL_POINTER_REGISTER instead of LAST_VIRTUAL_REGISTER. * function.c (instantiate_new_reg): Handle virtual_preferred_stack_boundary_rtx. * emit-rtl.c (init_virtual_regs): Handle VIRTUAL_PREFERRED_STACK_BOUNDARY_REGNUM. (init_emit_regs): Initialize virtual_preferred_stack_boundary_rtx. * explow.c (round_push): If crtl-preferred_stack_boundary is smaller than MAX_SUPPORTED_STACK_ALIGNMENT, use virtual_preferred_stack_boundary_rtx alignment instead of crtl-preferred_stack_boundary alignment. (allocate_dynamic_stack_space): Use CONST_INT_P and REG_P macros. Never decrease crtl-preferred_stack_boundary, use crtl-preferred_stack_boundary or MAX_SUPPORTED_STACK_ALIGNMENT instead of PREFERRED_STACK_BOUNDARY. Don't modify stack_pointer_delta in dynamic allocation, even when size is constant. (probe_stack_range, anti_adjust_stack_and_probe): Use CONST_INT_P macro. * print-rtl.c (print_rtx): Handle VIRTUAL_PREFERRED_STACK_BOUNDARY_REGNUM. * config/alpha/alpha.h (NONSTRICT_REG_OK_FP_BASE_P): Use LAST_VIRTUAL_POINTER_REGISTER instead of LAST_VIRTUAL_REGISTER. * config/frv/frv.c (frv_emit_movsi): Likewise. * config/arm/arm.c (thumb1_legitimate_address_p): Likewise. * config/rs6000/rs6000.c (virtual_stack_registers_memory_p): Likewise. * gcc.dg/torture/stackalign/alloca-6.c: New test. * gcc.target/i386/pr45234.c: New test. Revert: 2010-09-17 H.J. Lu hongjiu...@intel.com PR middle-end/45234 * calls.c (expand_call): Make sure that all variable sized adjustments are multiple of preferred stack boundary after stack alignment. Added: trunk/gcc/testsuite/gcc.dg/torture/stackalign/alloca-6.c trunk/gcc/testsuite/gcc.target/i386/pr45234.c Modified: trunk/gcc/ChangeLog trunk/gcc/calls.c trunk/gcc/config/alpha/alpha.h trunk/gcc/config/arm/arm.c trunk/gcc/config/frv/frv.c trunk/gcc/config/rs6000/rs6000.c trunk/gcc/emit-rtl.c trunk/gcc/explow.c trunk/gcc/function.c trunk/gcc/print-rtl.c trunk/gcc/rtl.h trunk/gcc/testsuite/ChangeLog -- Configure bugmail: http://gcc.gnu.org/bugzilla/userprefs.cgi?tab=email --- You are receiving this mail because: --- You are on the CC list for the bug.
[Bug middle-end/45234] [4.4/4.5/4.6 Regression] ICE in expand_call, at calls.c:2845 when passing aligned function argument from unaligned stack after alloca
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45234 --- Comment #25 from Jakub Jelinek jakub at gcc dot gnu.org 2010-09-24 15:02:06 UTC --- Author: jakub Date: Fri Sep 24 15:01:53 2010 New Revision: 164595 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=164595 Log: Revert: 2010-09-17 H.J. Lu hongjiu...@intel.com PR middle-end/45234 * calls.c (expand_call): Make sure that all variable sized adjustments are multiple of preferred stack boundary after stack alignment. * gcc.dg/torture/stackalign/alloca-5.c: Remove. Removed: branches/gcc-4_5-branch/gcc/testsuite/gcc.dg/torture/stackalign/alloca-5.c Modified: branches/gcc-4_5-branch/gcc/ChangeLog branches/gcc-4_5-branch/gcc/calls.c branches/gcc-4_5-branch/gcc/testsuite/ChangeLog -- Configure bugmail: http://gcc.gnu.org/bugzilla/userprefs.cgi?tab=email --- You are receiving this mail because: --- You are on the CC list for the bug.
[Bug middle-end/45234] [4.4/4.5/4.6 Regression] ICE in expand_call, at calls.c:2845 when passing aligned function argument from unaligned stack after alloca
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45234 --- Comment #26 from Jakub Jelinek jakub at gcc dot gnu.org 2010-09-24 15:07:40 UTC --- Author: jakub Date: Fri Sep 24 15:07:36 2010 New Revision: 164596 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=164596 Log: Revert: 2010-09-17 H.J. Lu hongjiu...@intel.com PR middle-end/45234 * calls.c (expand_call): Make sure that all variable sized adjustments are multiple of preferred stack boundary after stack alignment. * gcc.dg/torture/stackalign/alloca-5.c: Remove. Removed: branches/gcc-4_4-branch/gcc/testsuite/gcc.dg/torture/stackalign/alloca-5.c Modified: branches/gcc-4_4-branch/gcc/ChangeLog branches/gcc-4_4-branch/gcc/calls.c branches/gcc-4_4-branch/gcc/testsuite/ChangeLog -- Configure bugmail: http://gcc.gnu.org/bugzilla/userprefs.cgi?tab=email --- You are receiving this mail because: --- You are on the CC list for the bug.
[Bug middle-end/45234] [4.4/4.5/4.6 Regression] ICE in expand_call, at calls.c:2845 when passing aligned function argument from unaligned stack after alloca
--- Comment #22 from jakub at gcc dot gnu dot org 2010-09-22 17:24 --- The 4.5/4.4 backports of this patch break: /* { dg-do compile } */ /* { dg-options -march=i586 { target ilp32 } } */ struct S { union { double b[4]; } a[18]; } s, a[5]; void foo (struct S); struct S bar (struct S, struct S *, struct S); void foo (struct S arg) { } void baz (void) { foo (bar (s, a[1], a[2])); } (distilled from struct-layout-1.exp tests, many of them fail). Please either fix soon, or revert the patch. I'd like to roll 4.4.5 RC1 soon, but with this kind of regression it is not possible. -- jakub at gcc dot gnu dot org changed: What|Removed |Added Status|RESOLVED|REOPENED Priority|P2 |P1 Resolution|FIXED | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45234
[Bug middle-end/45234] [4.4/4.5/4.6 Regression] ICE in expand_call, at calls.c:2845 when passing aligned function argument from unaligned stack after alloca
--- Comment #23 from hjl dot tools at gmail dot com 2010-09-22 21:36 --- (In reply to comment #22) The 4.5/4.4 backports of this patch break: /* { dg-do compile } */ /* { dg-options -march=i586 { target ilp32 } } */ struct S { union { double b[4]; } a[18]; } s, a[5]; void foo (struct S); struct S bar (struct S, struct S *, struct S); void foo (struct S arg) { } void baz (void) { foo (bar (s, a[1], a[2])); } We are trying to adjust stacking when calling builtin functions. This patch works for me: index aef823f..0c7588a 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -2369,7 +2369,7 @@ expand_call (tree exp, rtx target, int ignore) preferred_unit_stack_boundary = preferred_stack_boundary / BITS_PER_UNIT; - if (SUPPORTS_STACK_ALIGNMENT) + if (SUPPORTS_STACK_ALIGNMENT fndecl !DECL_IS_BUILTIN (fndecl)) { /* All variable sized adjustments must be multiple of preferred stack boundary. Stack alignment may change preferred stack -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45234
[Bug middle-end/45234] [4.4/4.5/4.6 Regression] ICE in expand_call, at calls.c:2845 when passing aligned function argument from unaligned stack after alloca
--- Comment #19 from hjl at gcc dot gnu dot org 2010-09-20 20:32 --- Subject: Bug 45234 Author: hjl Date: Mon Sep 20 20:32:41 2010 New Revision: 164453 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=164453 Log: Make sure that all variable sized adjustments are multiple of preferred stack boundary after stack alignment. gcc/ 2010-09-20 H.J. Lu hongjiu...@intel.com Backport from mainline 2010-09-17 H.J. Lu hongjiu...@intel.com PR middle-end/45234 * calls.c (expand_call): Make sure that all variable sized adjustments are multiple of preferred stack boundary after stack alignment. gcc/testsuite/ 2010-09-20 H.J. Lu hongjiu...@intel.com Backport from mainline 2010-09-17 H.J. Lu hongjiu...@intel.com PR middle-end/45234 * gcc.dg/torture/stackalign/alloca-5.c: New. Added: branches/gcc-4_4-branch/gcc/testsuite/gcc.dg/torture/stackalign/alloca-5.c Modified: branches/gcc-4_4-branch/gcc/ChangeLog branches/gcc-4_4-branch/gcc/calls.c branches/gcc-4_4-branch/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45234
[Bug middle-end/45234] [4.4/4.5/4.6 Regression] ICE in expand_call, at calls.c:2845 when passing aligned function argument from unaligned stack after alloca
--- Comment #20 from hjl at gcc dot gnu dot org 2010-09-20 20:39 --- Subject: Bug 45234 Author: hjl Date: Mon Sep 20 20:39:18 2010 New Revision: 164455 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=164455 Log: Make sure that all variable sized adjustments are multiple of preferred stack boundary after stack alignment. gcc/ 2010-09-20 H.J. Lu hongjiu...@intel.com Backport from mainline 2010-09-17 H.J. Lu hongjiu...@intel.com PR middle-end/45234 * calls.c (expand_call): Make sure that all variable sized adjustments are multiple of preferred stack boundary after stack alignment. gcc/testsuite/ 2010-09-20 H.J. Lu hongjiu...@intel.com Backport from mainline 2010-09-17 H.J. Lu hongjiu...@intel.com PR middle-end/45234 * gcc.dg/torture/stackalign/alloca-5.c: New. Added: branches/gcc-4_5-branch/gcc/testsuite/gcc.dg/torture/stackalign/alloca-5.c Modified: branches/gcc-4_5-branch/gcc/ChangeLog branches/gcc-4_5-branch/gcc/calls.c branches/gcc-4_5-branch/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45234
[Bug middle-end/45234] [4.4/4.5/4.6 Regression] ICE in expand_call, at calls.c:2845 when passing aligned function argument from unaligned stack after alloca
--- Comment #21 from hjl dot tools at gmail dot com 2010-09-20 20:40 --- Fixed. -- hjl dot tools at gmail dot com changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45234
[Bug middle-end/45234] [4.4/4.5/4.6 Regression] ICE in expand_call, at calls.c:2845 when passing aligned function argument from unaligned stack after alloca
--- Comment #18 from sezeroz at gmail dot com 2010-09-18 20:51 --- Are 4.4 and 4.5 going to be fixed? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45234
[Bug middle-end/45234] [4.4/4.5/4.6 Regression] ICE in expand_call, at calls.c:2845 when passing aligned function argument from unaligned stack after alloca
--- Comment #17 from hjl at gcc dot gnu dot org 2010-09-17 18:00 --- Subject: Bug 45234 Author: hjl Date: Fri Sep 17 18:00:40 2010 New Revision: 164377 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=164377 Log: Make sure that all variable sized adjustments are multiple of preferred stack boundary after stack alignment. gcc/ 2010-09-17 H.J. Lu hongjiu...@intel.com PR middle-end/45234 * calls.c (expand_call): Make sure that all variable sized adjustments are multiple of preferred stack boundary after stack alignment. gcc/testsuite/ 2010-09-17 H.J. Lu hongjiu...@intel.com PR middle-end/45234 * gcc.dg/torture/stackalign/alloca-5.c: New. Added: trunk/gcc/testsuite/gcc.dg/torture/stackalign/alloca-5.c Modified: trunk/gcc/ChangeLog trunk/gcc/calls.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45234
[Bug middle-end/45234] [4.4/4.5/4.6 Regression] ICE in expand_call, at calls.c:2845 when passing aligned function argument from unaligned stack after alloca
--- Comment #16 from howarth at nitro dot med dot uc dot edu 2010-09-06 18:40 --- Still present for x86_64-unknown-gnu-linux with -m32 at r163927 when tested on x86_64 Fedora 10 using the new gcc/gcc/testsuite/gcc.dg/torture/stackalign/alloca-5.c test case only from gcc-pr45234-2.patch. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45234
[Bug middle-end/45234] [4.4/4.5/4.6 Regression] ICE in expand_call, at calls.c:2845 when passing aligned function argument from unaligned stack after alloca
-- rguenth at gcc dot gnu dot org changed: What|Removed |Added Priority|P3 |P2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45234
[Bug middle-end/45234] [4.4/4.5/4.6 Regression] ICE in expand_call, at calls.c:2845 when passing aligned function argument from unaligned stack after alloca
--- Comment #15 from hjl dot tools at gmail dot com 2010-08-10 13:36 --- A patch is posted at http://gcc.gnu.org/ml/gcc-patches/2010-08/msg00734.html -- hjl dot tools at gmail dot com changed: What|Removed |Added URL||http://gcc.gnu.org/ml/gcc- ||patches/2010- ||08/msg00734.html Component|target |middle-end http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45234