public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/55245] New: Compiler segfault when compiling the small test case
@ 2012-11-09 0:22 xinliangli at gmail dot com
2012-11-09 0:43 ` [Bug c++/55245] " xinliangli at gmail dot com
` (13 more replies)
0 siblings, 14 replies; 15+ messages in thread
From: xinliangli at gmail dot com @ 2012-11-09 0:22 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55245
Bug #: 55245
Summary: Compiler segfault when compiling the small test case
Classification: Unclassified
Product: gcc
Version: 4.7.3
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: xinliangli@gmail.com
Compiling the following program without any option, gcc segfaults:
get.cc: In member function 'virtual void Test2::TestBody()':
get.cc:22:27: internal compiler error: Segmentation fault
The problem is that one array type Vector2_f[2]'s size field is reset to zero
during gimplify_type_sizes by one of its variant (which has null size).
The problem does not show up in trunk compiler. Was this fixed explicitly in
trunk or it happens to work by luck?
David
template <typename VType> class Vector2 { };
typedef Vector2<float> Vector2_f;
void GetR( const Vector2_f mosaic_position[3]);
class Test1 {
private: virtual void TestBody();
};
void Test1::TestBody() {
Vector2_f mosaic_position[2][1]; // (1)
}
class Test2 {
private: virtual void TestBody();
};
int tri;
void Test2::TestBody() {
Vector2_f mosaic_position[2][3] = { };
GetR(mosaic_position[tri]);
}
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug c++/55245] Compiler segfault when compiling the small test case
2012-11-09 0:22 [Bug c++/55245] New: Compiler segfault when compiling the small test case xinliangli at gmail dot com
@ 2012-11-09 0:43 ` xinliangli at gmail dot com
2012-11-09 6:06 ` xinliangli at gmail dot com
` (12 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: xinliangli at gmail dot com @ 2012-11-09 0:43 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55245
davidxl <xinliangli at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Version|4.7.3 |4.8.0
--- Comment #1 from davidxl <xinliangli at gmail dot com> 2012-11-09 00:42:55 UTC ---
The problem actually exists in main line compiler too.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug c++/55245] Compiler segfault when compiling the small test case
2012-11-09 0:22 [Bug c++/55245] New: Compiler segfault when compiling the small test case xinliangli at gmail dot com
2012-11-09 0:43 ` [Bug c++/55245] " xinliangli at gmail dot com
@ 2012-11-09 6:06 ` xinliangli at gmail dot com
2012-11-09 9:06 ` [Bug c++/55245] [4.6/4.7/4.8 Regression] " jakub at gcc dot gnu.org
` (11 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: xinliangli at gmail dot com @ 2012-11-09 6:06 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55245
--- Comment #2 from davidxl <xinliangli at gmail dot com> 2012-11-09 06:05:43 UTC ---
(In reply to comment #1)
> The problem actually exists in main line compiler too.
This is another test case.
Segfaults without option, but builds ok with -DOK.
The problem seems to be that the main variant of the array type
Vector2<float>[2] does not have size, while the variant Vector2_f[2] has. The
variant's size later gets reset to 0 (from main variant).
David
template <typename VType> class Vector2 {
public:
Vector2();
VType x() const;
};
typedef Vector2<float> Vector2_f;
void GetR(const Vector2_f mosaic_position[3]);
template <class C> struct DefaultDeleter {
float GetColorTexCoord(Vector2_f &tex_coord) const {
return tex_coord.x();
}
};
class GetT { private: virtual void TestBody(); };
void GetT::TestBody() {
#ifdef OK
Vector2<float> mosaic_position[2][3] = { };
#else
Vector2_f mosaic_position[2][3] = { };
#endif
}
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug c++/55245] [4.6/4.7/4.8 Regression] Compiler segfault when compiling the small test case
2012-11-09 0:22 [Bug c++/55245] New: Compiler segfault when compiling the small test case xinliangli at gmail dot com
2012-11-09 0:43 ` [Bug c++/55245] " xinliangli at gmail dot com
2012-11-09 6:06 ` xinliangli at gmail dot com
@ 2012-11-09 9:06 ` jakub at gcc dot gnu.org
2012-11-21 0:53 ` [Bug c++/55245] [4.6/4.7/4.8 Regression] Compiler segfault when compiling a " dnovillo at gcc dot gnu.org
` (10 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: jakub at gcc dot gnu.org @ 2012-11-09 9:06 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55245
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2012-11-09
CC| |jakub at gcc dot gnu.org
Target Milestone|--- |4.6.4
Summary|Compiler segfault when |[4.6/4.7/4.8 Regression]
|compiling the small test |Compiler segfault when
|case |compiling the small test
| |case
Ever Confirmed|0 |1
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-11-09 09:06:25 UTC ---
Started with http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=170853 aka
PR48029 fix.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug c++/55245] [4.6/4.7/4.8 Regression] Compiler segfault when compiling a small test case
2012-11-09 0:22 [Bug c++/55245] New: Compiler segfault when compiling the small test case xinliangli at gmail dot com
` (2 preceding siblings ...)
2012-11-09 9:06 ` [Bug c++/55245] [4.6/4.7/4.8 Regression] " jakub at gcc dot gnu.org
@ 2012-11-21 0:53 ` dnovillo at gcc dot gnu.org
2012-11-21 16:17 ` xinliangli at gmail dot com
` (9 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: dnovillo at gcc dot gnu.org @ 2012-11-21 0:53 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55245
Diego Novillo <dnovillo at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |dnovillo at gcc dot gnu.org
--- Comment #4 from Diego Novillo <dnovillo at gcc dot gnu.org> 2012-11-21 00:52:57 UTC ---
David's analysis is correct. The type of the element at the point of the
failure is not a complete type.
At this point, I think all the types should've been completed, so I'm not sure
why this one still isn't. Jason, this patchlet (which is very likely papering
over the issue) allows the file to build.
Index: gimplify.c
===================================================================
--- gimplify.c (revision 193508)
+++ gimplify.c (working copy)
@@ -2123,6 +2123,8 @@
if (TREE_OPERAND (t, 3) == NULL_TREE)
{
tree elmt_type = TREE_TYPE (TREE_TYPE (TREE_OPERAND (t, 0)));
+ if (!COMPLETE_TYPE_P (elmt_type))
+ layout_type (elmt_type);
tree elmt_size = unshare_expr (array_ref_element_size (t));
tree factor = size_int (TYPE_ALIGN_UNIT (elmt_type));
In this case, we have
t ==> mosaic_position[tri]
elmt_type ==> struct Vector2_f[3], but we cannot compute its element size
because it has not yet been laid out.
Jason, what would be a better place to make sure the type is laid out?
Thanks. Diego.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug c++/55245] [4.6/4.7/4.8 Regression] Compiler segfault when compiling a small test case
2012-11-09 0:22 [Bug c++/55245] New: Compiler segfault when compiling the small test case xinliangli at gmail dot com
` (3 preceding siblings ...)
2012-11-21 0:53 ` [Bug c++/55245] [4.6/4.7/4.8 Regression] Compiler segfault when compiling a " dnovillo at gcc dot gnu.org
@ 2012-11-21 16:17 ` xinliangli at gmail dot com
2012-11-26 9:49 ` jakub at gcc dot gnu.org
` (8 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: xinliangli at gmail dot com @ 2012-11-21 16:17 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55245
--- Comment #5 from davidxl <xinliangli at gmail dot com> 2012-11-21 16:17:27 UTC ---
Should the main variant types gets laid out in gimplify_type_sizes, when the
variant's type has size, but the main variant is incomplete?
David
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug c++/55245] [4.6/4.7/4.8 Regression] Compiler segfault when compiling a small test case
2012-11-09 0:22 [Bug c++/55245] New: Compiler segfault when compiling the small test case xinliangli at gmail dot com
` (4 preceding siblings ...)
2012-11-21 16:17 ` xinliangli at gmail dot com
@ 2012-11-26 9:49 ` jakub at gcc dot gnu.org
2012-11-26 18:36 ` dnovillo at gcc dot gnu.org
` (7 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: jakub at gcc dot gnu.org @ 2012-11-26 9:49 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55245
--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-11-26 09:49:23 UTC ---
I'd say it should be the FE's responsibility to layout all needed types, so it
should be done either somewhere when the type ARRAY_REF is created or
finalized, or in cp-gimplify.c at latest.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug c++/55245] [4.6/4.7/4.8 Regression] Compiler segfault when compiling a small test case
2012-11-09 0:22 [Bug c++/55245] New: Compiler segfault when compiling the small test case xinliangli at gmail dot com
` (5 preceding siblings ...)
2012-11-26 9:49 ` jakub at gcc dot gnu.org
@ 2012-11-26 18:36 ` dnovillo at gcc dot gnu.org
2012-12-06 16:11 ` rguenth at gcc dot gnu.org
` (6 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: dnovillo at gcc dot gnu.org @ 2012-11-26 18:36 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55245
--- Comment #7 from Diego Novillo <dnovillo at gcc dot gnu.org> 2012-11-26 18:35:43 UTC ---
Author: dnovillo
Date: Mon Nov 26 18:35:38 2012
New Revision: 193825
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=193825
Log:
Google ref b/7500842.
2012-11-26 Diego Novillo <dnovillo@google.com>
* gimplify.c: Work around for PR 55245.
testsuite/ChangeLog.google-integration
* g++.dg/pr55245.C: New.
Added:
branches/google/gcc-4_7/gcc/testsuite/g++.dg/pr55245.C
Modified:
branches/google/gcc-4_7/gcc/ChangeLog.google-4_7
branches/google/gcc-4_7/gcc/gimplify.c
branches/google/gcc-4_7/gcc/testsuite/ChangeLog.google-4_7
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug c++/55245] [4.6/4.7/4.8 Regression] Compiler segfault when compiling a small test case
2012-11-09 0:22 [Bug c++/55245] New: Compiler segfault when compiling the small test case xinliangli at gmail dot com
` (6 preceding siblings ...)
2012-11-26 18:36 ` dnovillo at gcc dot gnu.org
@ 2012-12-06 16:11 ` rguenth at gcc dot gnu.org
2012-12-06 22:18 ` [Bug c++/55245] [4.6 " jason at gcc dot gnu.org
` (5 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: rguenth at gcc dot gnu.org @ 2012-12-06 16:11 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55245
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |ice-on-valid-code
Priority|P3 |P2
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug c++/55245] [4.6 Regression] Compiler segfault when compiling a small test case
2012-11-09 0:22 [Bug c++/55245] New: Compiler segfault when compiling the small test case xinliangli at gmail dot com
` (7 preceding siblings ...)
2012-12-06 16:11 ` rguenth at gcc dot gnu.org
@ 2012-12-06 22:18 ` jason at gcc dot gnu.org
2012-12-07 4:55 ` jason at gcc dot gnu.org
` (4 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: jason at gcc dot gnu.org @ 2012-12-06 22:18 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55245
Jason Merrill <jason at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jason at gcc dot gnu.org
Summary|[4.6/4.7/4.8 Regression] |[4.6 Regression] Compiler
|Compiler segfault when |segfault when compiling a
|compiling a small test case |small test case
--- Comment #8 from Jason Merrill <jason at gcc dot gnu.org> 2012-12-06 22:18:18 UTC ---
Fixed for 4.7 and 4.8 by patch for bug 55032.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug c++/55245] [4.6 Regression] Compiler segfault when compiling a small test case
2012-11-09 0:22 [Bug c++/55245] New: Compiler segfault when compiling the small test case xinliangli at gmail dot com
` (8 preceding siblings ...)
2012-12-06 22:18 ` [Bug c++/55245] [4.6 " jason at gcc dot gnu.org
@ 2012-12-07 4:55 ` jason at gcc dot gnu.org
2012-12-07 5:15 ` jason at gcc dot gnu.org
` (3 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: jason at gcc dot gnu.org @ 2012-12-07 4:55 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55245
--- Comment #9 from Jason Merrill <jason at gcc dot gnu.org> 2012-12-07 04:54:23 UTC ---
Author: jason
Date: Fri Dec 7 04:54:12 2012
New Revision: 194283
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=194283
Log:
add PR 55245 marker
Modified:
trunk/gcc/ChangeLog
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug c++/55245] [4.6 Regression] Compiler segfault when compiling a small test case
2012-11-09 0:22 [Bug c++/55245] New: Compiler segfault when compiling the small test case xinliangli at gmail dot com
` (9 preceding siblings ...)
2012-12-07 4:55 ` jason at gcc dot gnu.org
@ 2012-12-07 5:15 ` jason at gcc dot gnu.org
2013-01-02 19:04 ` jason at gcc dot gnu.org
` (2 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: jason at gcc dot gnu.org @ 2012-12-07 5:15 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55245
Jason Merrill <jason at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
AssignedTo|unassigned at gcc dot |jason at gcc dot gnu.org
|gnu.org |
--- Comment #10 from Jason Merrill <jason at gcc dot gnu.org> 2012-12-07 05:14:34 UTC ---
Fix applied for 4.6.4 as well.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug c++/55245] [4.6 Regression] Compiler segfault when compiling a small test case
2012-11-09 0:22 [Bug c++/55245] New: Compiler segfault when compiling the small test case xinliangli at gmail dot com
` (10 preceding siblings ...)
2012-12-07 5:15 ` jason at gcc dot gnu.org
@ 2013-01-02 19:04 ` jason at gcc dot gnu.org
2013-01-02 19:05 ` jason at gcc dot gnu.org
2013-01-02 19:05 ` jason at gcc dot gnu.org
13 siblings, 0 replies; 15+ messages in thread
From: jason at gcc dot gnu.org @ 2013-01-02 19:04 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55245
--- Comment #11 from Jason Merrill <jason at gcc dot gnu.org> 2013-01-02 19:03:17 UTC ---
Author: jason
Date: Wed Jan 2 19:03:04 2013
New Revision: 194811
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=194811
Log:
PR c++/55804
PR c++/55032
PR c++/55245
* tree.c (build_array_type_1): Revert earlier change.
* cp/tree.c (build_cplus_array_type): Copy layout information
to main variant if necessary.
Added:
trunk/gcc/testsuite/g++.dg/init/array33.C
Modified:
trunk/gcc/ChangeLog
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/tree.c
trunk/gcc/tree.c
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug c++/55245] [4.6 Regression] Compiler segfault when compiling a small test case
2012-11-09 0:22 [Bug c++/55245] New: Compiler segfault when compiling the small test case xinliangli at gmail dot com
` (12 preceding siblings ...)
2013-01-02 19:05 ` jason at gcc dot gnu.org
@ 2013-01-02 19:05 ` jason at gcc dot gnu.org
13 siblings, 0 replies; 15+ messages in thread
From: jason at gcc dot gnu.org @ 2013-01-02 19:05 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55245
--- Comment #13 from Jason Merrill <jason at gcc dot gnu.org> 2013-01-02 19:04:07 UTC ---
Author: jason
Date: Wed Jan 2 19:03:46 2013
New Revision: 194813
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=194813
Log:
PR c++/55804
PR c++/55032
PR c++/55245
* tree.c (build_array_type_1): Revert earlier change.
* cp/tree.c (build_cplus_array_type): Copy layout information
to main variant if necessary.
Added:
branches/gcc-4_6-branch/gcc/testsuite/g++.dg/init/array33.C
Modified:
branches/gcc-4_6-branch/gcc/ChangeLog
branches/gcc-4_6-branch/gcc/cp/ChangeLog
branches/gcc-4_6-branch/gcc/cp/tree.c
branches/gcc-4_6-branch/gcc/tree.c
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug c++/55245] [4.6 Regression] Compiler segfault when compiling a small test case
2012-11-09 0:22 [Bug c++/55245] New: Compiler segfault when compiling the small test case xinliangli at gmail dot com
` (11 preceding siblings ...)
2013-01-02 19:04 ` jason at gcc dot gnu.org
@ 2013-01-02 19:05 ` jason at gcc dot gnu.org
2013-01-02 19:05 ` jason at gcc dot gnu.org
13 siblings, 0 replies; 15+ messages in thread
From: jason at gcc dot gnu.org @ 2013-01-02 19:05 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55245
--- Comment #12 from Jason Merrill <jason at gcc dot gnu.org> 2013-01-02 19:03:55 UTC ---
Author: jason
Date: Wed Jan 2 19:03:37 2013
New Revision: 194812
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=194812
Log:
PR c++/55804
PR c++/55032
PR c++/55245
* tree.c (build_array_type_1): Revert earlier change.
* cp/tree.c (build_cplus_array_type): Copy layout information
to main variant if necessary.
Added:
branches/gcc-4_7-branch/gcc/testsuite/g++.dg/init/array33.C
Modified:
branches/gcc-4_7-branch/gcc/ChangeLog
branches/gcc-4_7-branch/gcc/cp/ChangeLog
branches/gcc-4_7-branch/gcc/cp/tree.c
branches/gcc-4_7-branch/gcc/tree.c
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2013-01-02 19:05 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-11-09 0:22 [Bug c++/55245] New: Compiler segfault when compiling the small test case xinliangli at gmail dot com
2012-11-09 0:43 ` [Bug c++/55245] " xinliangli at gmail dot com
2012-11-09 6:06 ` xinliangli at gmail dot com
2012-11-09 9:06 ` [Bug c++/55245] [4.6/4.7/4.8 Regression] " jakub at gcc dot gnu.org
2012-11-21 0:53 ` [Bug c++/55245] [4.6/4.7/4.8 Regression] Compiler segfault when compiling a " dnovillo at gcc dot gnu.org
2012-11-21 16:17 ` xinliangli at gmail dot com
2012-11-26 9:49 ` jakub at gcc dot gnu.org
2012-11-26 18:36 ` dnovillo at gcc dot gnu.org
2012-12-06 16:11 ` rguenth at gcc dot gnu.org
2012-12-06 22:18 ` [Bug c++/55245] [4.6 " jason at gcc dot gnu.org
2012-12-07 4:55 ` jason at gcc dot gnu.org
2012-12-07 5:15 ` jason at gcc dot gnu.org
2013-01-02 19:04 ` jason at gcc dot gnu.org
2013-01-02 19:05 ` jason at gcc dot gnu.org
2013-01-02 19:05 ` jason at gcc dot gnu.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).