public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
@ 2007-12-12 22:33 ` tbm at cyrius dot com
2007-12-12 23:03 ` rguenth at gcc dot gnu dot org
` (13 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: tbm at cyrius dot com @ 2007-12-12 22:33 UTC (permalink / raw)
To: gcc-bugs
------- Comment #1 from tbm at cyrius dot com 2007-12-12 22:33 -------
/* Testcase by Martin Michlmayr <tbm@cyrius.com> */
typedef struct chunk_t chunk_t;
struct chunk_t
{
unsigned char *ptr;
long unsigned int len;
};
extern chunk_t asn1_wrap (chunk_t c, ...);
typedef struct linked_list_t linked_list_t;
chunk_t ietfAttr_list_encode (linked_list_t * list);
extern linked_list_t *groups;
static unsigned char ASN1_group_oid_str[] = {
0x06
};
static const chunk_t ASN1_group_oid = {
ASN1_group_oid_str, sizeof (ASN1_group_oid_str)
};
static chunk_t
build_attribute_type (const chunk_t type, chunk_t content)
{
return type;
}
static chunk_t
build_attributes (void)
{
return asn1_wrap (build_attribute_type (ASN1_group_oid,
ietfAttr_list_encode (groups)));
}
void build_attr_cert (void)
{
asn1_wrap (build_attributes ());
}
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34448
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
@ 2007-12-12 22:33 tbm at cyrius dot com
2007-12-12 22:33 ` [Bug tree-optimization/34448] " tbm at cyrius dot com
` (14 more replies)
0 siblings, 15 replies; 16+ messages in thread
From: tbm at cyrius dot com @ 2007-12-12 22:33 UTC (permalink / raw)
To: gcc-bugs
With current trunk:
(sid)3201:tbm@em64t: ~] /usr/lib/gcc-snapshot/bin/gcc -c -O -Wall
strongswan-build.c
strongswan-build.c: In function 'build_attr_cert':
strongswan-build.c:27: internal compiler error: in declare_inline_vars, at
tree-inline.c:3243
Please submit a full bug report,
with preprocessed source if appropriate.
This happens with
gcc version 4.3.0 20071212 (experimental) [trunk revision 127646] (Debian
20071212-1)
but didn't happen with
gcc version 4.3.0 20071207 (experimental) [trunk revision 127646] (Debian
20071206-1)
--
Summary: [4.3 Regression] ICE in declare_inline_vars, at tree-
inline.c:3243
Product: gcc
Version: 4.3.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: tbm at cyrius dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34448
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
2007-12-12 22:33 ` [Bug tree-optimization/34448] " tbm at cyrius dot com
@ 2007-12-12 23:03 ` rguenth at gcc dot gnu dot org
2007-12-12 23:08 ` rguenth at gcc dot gnu dot org
` (12 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2007-12-12 23:03 UTC (permalink / raw)
To: gcc-bugs
------- Comment #2 from rguenth at gcc dot gnu dot org 2007-12-12 23:03 -------
(your trunk revision reporting is broken)
On which architecture? This works for me on i686 with r130793.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34448
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
2007-12-12 22:33 ` [Bug tree-optimization/34448] " tbm at cyrius dot com
2007-12-12 23:03 ` rguenth at gcc dot gnu dot org
@ 2007-12-12 23:08 ` rguenth at gcc dot gnu dot org
2007-12-12 23:27 ` pinskia at gcc dot gnu dot org
` (11 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2007-12-12 23:08 UTC (permalink / raw)
To: gcc-bugs
------- Comment #3 from rguenth at gcc dot gnu dot org 2007-12-12 23:08 -------
Ok, I see it on x86_64 with r130795 and it didn't reproduce before SVN update
so it identified
2007-12-12 Aldy Hernandez <aldyh@redhat.com>
PR tree-optimization/32901
* gimplify.c (gimplify_modify_expr_rhs): Handle the case when we
are assigning from a constant constructor.
Fix wrapping in function comment.
Aldy, please have a look.
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |aldyh at gcc dot gnu dot org
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
Last reconfirmed|0000-00-00 00:00:00 |2007-12-12 23:08:33
date| |
Target Milestone|--- |4.3.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34448
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
` (2 preceding siblings ...)
2007-12-12 23:08 ` rguenth at gcc dot gnu dot org
@ 2007-12-12 23:27 ` pinskia at gcc dot gnu dot org
2007-12-12 23:33 ` aldyh at gcc dot gnu dot org
` (10 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2007-12-12 23:27 UTC (permalink / raw)
To: gcc-bugs
--
pinskia at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Severity|normal |blocker
Keywords| |ice-on-valid-code
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34448
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
` (3 preceding siblings ...)
2007-12-12 23:27 ` pinskia at gcc dot gnu dot org
@ 2007-12-12 23:33 ` aldyh at gcc dot gnu dot org
2007-12-13 0:08 ` jakub at gcc dot gnu dot org
` (9 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: aldyh at gcc dot gnu dot org @ 2007-12-12 23:33 UTC (permalink / raw)
To: gcc-bugs
------- Comment #4 from aldyh at gcc dot gnu dot org 2007-12-12 23:33 -------
I'll take care of this.
--
aldyh at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
AssignedTo|unassigned at gcc dot gnu |aldyh at gcc dot gnu dot org
|dot org |
Status|NEW |ASSIGNED
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34448
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
` (4 preceding siblings ...)
2007-12-12 23:33 ` aldyh at gcc dot gnu dot org
@ 2007-12-13 0:08 ` jakub at gcc dot gnu dot org
2007-12-13 21:00 ` aldyh at gcc dot gnu dot org
` (8 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: jakub at gcc dot gnu dot org @ 2007-12-13 0:08 UTC (permalink / raw)
To: gcc-bugs
------- Comment #5 from jakub at gcc dot gnu dot org 2007-12-13 00:08 -------
ret = GS_OK; } ret = GS_UNHANDLED; looks suspicious, but
@@ -3492,6 +3492,7 @@ gimplify_modify_expr_rhs (tree *expr_p,
{
*from_p = DECL_INITIAL (*from_p);
ret = GS_OK;
+ break;
}
ret = GS_UNHANDLED;
break;
doesn't cure this. But if you prevent this optimization whenever
gimplify_init_constructor would:
if (valid_const_initializer
&& num_nonzero_elements > 1
&& TREE_READONLY (object)
&& TREE_CODE (object) == VAR_DECL)
or
if (size > 0 && !can_move_by_pieces (size, align))
then this bug will go away.
BTW, in addition to the volatile check suggested by Mark, shouldn't it test
also
!TREE_SIDE_EFFECTS (DECL_INITIAL (...)))? Otherwise:
struct A { int i, j; };
static struct A a, b;
int foo (int x, int y)
{
const struct A i = { x++, y++ };
a = i;
b = i;
return x + y;
}
could evaluate multiple times. Actually this is a wrong example, because i
here
was already gimplified and while for constant initializer
gimplify_init_constructor puts DECL_INITIAL back (valid_const_initializer &&
&& num_nonzero_elements > 1 && TREE_READONLY (object) && TREE_CODE (object) ==
VAR_DECL case), for non-constant DECL_INITIAL will be NULL.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34448
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
` (5 preceding siblings ...)
2007-12-13 0:08 ` jakub at gcc dot gnu dot org
@ 2007-12-13 21:00 ` aldyh at gcc dot gnu dot org
2007-12-13 23:10 ` jakub at gcc dot gnu dot org
` (7 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: aldyh at gcc dot gnu dot org @ 2007-12-13 21:00 UTC (permalink / raw)
To: gcc-bugs
------- Comment #6 from aldyh at gcc dot gnu dot org 2007-12-13 21:00 -------
Shouldn't that be:
if (valid_const_initializer
&& num_nonzero_elements > 1
&& TREE_READONLY (object)
&& TREE_CODE (object) == VAR_DECL
&& !DECL_NAME(object) <---- here
since we won't create the "C" temporary unless !DECL_NAME(object)??
Even with this change (with the DECL_NAME check), the inline problem doesn't go
away. I'll look into it.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34448
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
` (6 preceding siblings ...)
2007-12-13 21:00 ` aldyh at gcc dot gnu dot org
@ 2007-12-13 23:10 ` jakub at gcc dot gnu dot org
2007-12-14 0:12 ` aldyh at gcc dot gnu dot org
` (6 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: jakub at gcc dot gnu dot org @ 2007-12-13 23:10 UTC (permalink / raw)
To: gcc-bugs
------- Comment #7 from jakub at gcc dot gnu dot org 2007-12-13 23:10 -------
Created an attachment (id=14748)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=14748&action=view)
hack
What I meant is roughly this. Except that this has horrible code duplication
with gimplify_init_ctor and so wouldn't be really maintanable, so take it just
as a proof of concept. For aggregates this optimization wouldn't be done if
gimplify_init_ctor later loads it from memory anyway, or if it would try to
change *to_p into TREE_STATIC (the latter is what breaks the inliner), for
vectors/complex it would accept it always.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34448
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
` (7 preceding siblings ...)
2007-12-13 23:10 ` jakub at gcc dot gnu dot org
@ 2007-12-14 0:12 ` aldyh at gcc dot gnu dot org
2007-12-14 7:46 ` jakub at gcc dot gnu dot org
` (5 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: aldyh at gcc dot gnu dot org @ 2007-12-14 0:12 UTC (permalink / raw)
To: gcc-bugs
------- Comment #8 from aldyh at gcc dot gnu dot org 2007-12-14 00:12 -------
Gosh, I was going through a similar path, and was horribly depressed at the
code duplication. I'll come up with some abstraction which we can use in both
gimplify_init_ctor and gimplify_modify_expr_rhs. Thanks.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34448
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
` (8 preceding siblings ...)
2007-12-14 0:12 ` aldyh at gcc dot gnu dot org
@ 2007-12-14 7:46 ` jakub at gcc dot gnu dot org
2007-12-14 16:10 ` aldyh at gcc dot gnu dot org
` (4 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: jakub at gcc dot gnu dot org @ 2007-12-14 7:46 UTC (permalink / raw)
To: gcc-bugs
------- Comment #9 from jakub at gcc dot gnu dot org 2007-12-14 07:46 -------
Perhaps adding a bool argument to gimplify_init_constructor would solve it,
the current callers would pass false, your new code would call it too and pass
true. If this flag would be true, gimplify_init_ctor wouldn't create the new
vars or make stuff static, but instead just signalize a failure to the caller.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34448
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
` (9 preceding siblings ...)
2007-12-14 7:46 ` jakub at gcc dot gnu dot org
@ 2007-12-14 16:10 ` aldyh at gcc dot gnu dot org
2007-12-20 20:02 ` jakub at gcc dot gnu dot org
` (3 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: aldyh at gcc dot gnu dot org @ 2007-12-14 16:10 UTC (permalink / raw)
To: gcc-bugs
------- Comment #10 from aldyh at gcc dot gnu dot org 2007-12-14 16:10 -------
Testing a patch.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34448
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
` (10 preceding siblings ...)
2007-12-14 16:10 ` aldyh at gcc dot gnu dot org
@ 2007-12-20 20:02 ` jakub at gcc dot gnu dot org
2008-01-02 18:59 ` mmitchel at gcc dot gnu dot org
` (2 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: jakub at gcc dot gnu dot org @ 2007-12-20 20:02 UTC (permalink / raw)
To: gcc-bugs
------- Comment #11 from jakub at gcc dot gnu dot org 2007-12-20 20:01 -------
*** Bug 34467 has been marked as a duplicate of this bug. ***
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34448
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
` (11 preceding siblings ...)
2007-12-20 20:02 ` jakub at gcc dot gnu dot org
@ 2008-01-02 18:59 ` mmitchel at gcc dot gnu dot org
2008-01-04 15:07 ` aldyh at gcc dot gnu dot org
2008-01-04 15:18 ` jakub at gcc dot gnu dot org
14 siblings, 0 replies; 16+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2008-01-02 18:59 UTC (permalink / raw)
To: gcc-bugs
--
mmitchel at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Priority|P3 |P1
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34448
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
` (12 preceding siblings ...)
2008-01-02 18:59 ` mmitchel at gcc dot gnu dot org
@ 2008-01-04 15:07 ` aldyh at gcc dot gnu dot org
2008-01-04 15:18 ` jakub at gcc dot gnu dot org
14 siblings, 0 replies; 16+ messages in thread
From: aldyh at gcc dot gnu dot org @ 2008-01-04 15:07 UTC (permalink / raw)
To: gcc-bugs
------- Comment #12 from aldyh at gcc dot gnu dot org 2008-01-04 14:50 -------
Subject: Bug 34448
Author: aldyh
Date: Fri Jan 4 14:49:28 2008
New Revision: 131323
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=131323
Log:
PR tree-optimization/34448
PR tree-optimization/34465
* gimplify.c (gimplify_init_constructor): Add new parameter
notify_temp_creation. Use it.
(gimplify_modify_expr_rhs): Take volatiles into account when
optimizing constructors.
Do not optimize constructors if gimplify_init_constructor will dump to
memory.
* gcc.dg/tree-ssa/pr32901.c: Tests const volatiles.
* gcc.c-torture/compile/pr34448.c: New.
Added:
trunk/gcc/testsuite/gcc.c-torture/compile/pr34448.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/gimplify.c
trunk/gcc/testsuite/gcc.dg/tree-ssa/pr32901.c
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34448
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Bug tree-optimization/34448] [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243
2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
` (13 preceding siblings ...)
2008-01-04 15:07 ` aldyh at gcc dot gnu dot org
@ 2008-01-04 15:18 ` jakub at gcc dot gnu dot org
14 siblings, 0 replies; 16+ messages in thread
From: jakub at gcc dot gnu dot org @ 2008-01-04 15:18 UTC (permalink / raw)
To: gcc-bugs
------- Comment #13 from jakub at gcc dot gnu dot org 2008-01-04 15:05 -------
Fixed.
--
jakub at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution| |FIXED
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34448
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2008-01-04 15:06 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-12-12 22:33 [Bug tree-optimization/34448] New: [4.3 Regression] ICE in declare_inline_vars, at tree-inline.c:3243 tbm at cyrius dot com
2007-12-12 22:33 ` [Bug tree-optimization/34448] " tbm at cyrius dot com
2007-12-12 23:03 ` rguenth at gcc dot gnu dot org
2007-12-12 23:08 ` rguenth at gcc dot gnu dot org
2007-12-12 23:27 ` pinskia at gcc dot gnu dot org
2007-12-12 23:33 ` aldyh at gcc dot gnu dot org
2007-12-13 0:08 ` jakub at gcc dot gnu dot org
2007-12-13 21:00 ` aldyh at gcc dot gnu dot org
2007-12-13 23:10 ` jakub at gcc dot gnu dot org
2007-12-14 0:12 ` aldyh at gcc dot gnu dot org
2007-12-14 7:46 ` jakub at gcc dot gnu dot org
2007-12-14 16:10 ` aldyh at gcc dot gnu dot org
2007-12-20 20:02 ` jakub at gcc dot gnu dot org
2008-01-02 18:59 ` mmitchel at gcc dot gnu dot org
2008-01-04 15:07 ` aldyh at gcc dot gnu dot org
2008-01-04 15:18 ` jakub at gcc dot gnu dot org
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).