diff options
author | Jason Merrill <jason@redhat.com> | 2013-05-10 10:17:37 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2013-05-10 10:17:37 -0400 |
commit | 616eece3a583ddc62b43a5fed364df7a991cf5af (patch) | |
tree | 6c879342dbcc4b414daee14c71f6959f849ebba7 /gcc/cp | |
parent | 5ced939e817428c45e51f8caa16db26a7d7168c6 (diff) | |
download | gcc-616eece3a583ddc62b43a5fed364df7a991cf5af.zip gcc-616eece3a583ddc62b43a5fed364df7a991cf5af.tar.gz gcc-616eece3a583ddc62b43a5fed364df7a991cf5af.tar.bz2 |
re PR c++/57047 ([C++11] stl_pair.h:137:64: internal compiler error: Segmentation fault in constexpr constructor)
PR c++/57047
* semantics.c (cxx_fold_indirect_ref): Fix thinko.
From-SVN: r198777
Diffstat (limited to 'gcc/cp')
-rw-r--r-- | gcc/cp/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/cp/semantics.c | 8 |
2 files changed, 8 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ad7235a..63cc714 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2013-05-10 Jason Merrill <jason@redhat.com> + PR c++/57047 + * semantics.c (cxx_fold_indirect_ref): Fix thinko. + PR c++/55149 * semantics.c (add_capture): Error rather than abort on copy capture of VLA. diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index d0db10a..3e78887 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -7643,15 +7643,17 @@ cxx_fold_indirect_ref (location_t loc, tree type, tree op0, bool *empty_base) } } } - /* *(foo *)fooarrptreturn> (*fooarrptr)[0] */ + /* *(foo *)fooarrptr => (*fooarrptr)[0] */ else if (TREE_CODE (TREE_TYPE (subtype)) == ARRAY_TYPE && (same_type_ignoring_top_level_qualifiers_p (type, TREE_TYPE (TREE_TYPE (subtype))))) { tree type_domain; tree min_val = size_zero_node; - sub = cxx_fold_indirect_ref (loc, TREE_TYPE (subtype), sub, NULL); - if (!sub) + tree newsub = cxx_fold_indirect_ref (loc, TREE_TYPE (subtype), sub, NULL); + if (newsub) + sub = newsub; + else sub = build1_loc (loc, INDIRECT_REF, TREE_TYPE (subtype), sub); type_domain = TYPE_DOMAIN (TREE_TYPE (sub)); if (type_domain && TYPE_MIN_VALUE (type_domain)) |