diff options
author | Richard Biener <rguenther@suse.de> | 2019-04-25 11:15:35 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2019-04-25 11:15:35 +0000 |
commit | f469220df6185dee831686631c570245769887da (patch) | |
tree | 39ced2244370f095aa82245a8bfb75a1ad2ea628 /gcc | |
parent | 9168f22057a72822f0d2ca5b1053e97becd649fa (diff) | |
download | gcc-f469220df6185dee831686631c570245769887da.zip gcc-f469220df6185dee831686631c570245769887da.tar.gz gcc-f469220df6185dee831686631c570245769887da.tar.bz2 |
re PR middle-end/90194 (ICE in expand_debug_expr, at cfgexpand.c:5244)
2019-04-25 Richard Biener <rguenther@suse.de>
PR middle-end/90194
* match.pd: Add pattern to simplify view-conversion of an
empty constructor.
* g++.dg/torture/pr90194.C: New testcase.
From-SVN: r270569
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/match.pd | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/torture/pr90194.C | 18 |
4 files changed, 36 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d4c5b31..2aeafe1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2019-04-25 Richard Biener <rguenther@suse.de> + + PR middle-end/90194 + * match.pd: Add pattern to simplify view-conversion of an + empty constructor. + 2019-04-24 Clement Chigot <clement.chigot@atos.net> * config/rs6000/aix71.h (SUBTARGET_OVERRIDE_OPTIONS): Disable diff --git a/gcc/match.pd b/gcc/match.pd index 0d82bea..039ddac 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -2596,6 +2596,13 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) && TYPE_UNSIGNED (TREE_TYPE (@1))))) (view_convert @1))) +/* Simplify a view-converted empty constructor. */ +(simplify + (view_convert CONSTRUCTOR@0) + (if (TREE_CODE (@0) != SSA_NAME + && CONSTRUCTOR_NELTS (@0) == 0) + { build_zero_cst (type); })) + /* Re-association barriers around constants and other re-association barriers can be removed. */ (simplify diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 115c220..f1291f1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-04-25 Richard Biener <rguenther@suse.de> + + PR middle-end/90194 + * g++.dg/torture/pr90194.C: New testcase. + 2019-04-24 Marek Polacek <polacek@redhat.com> PR c++/90236 diff --git a/gcc/testsuite/g++.dg/torture/pr90194.C b/gcc/testsuite/g++.dg/torture/pr90194.C new file mode 100644 index 0000000..f0c3a77 --- /dev/null +++ b/gcc/testsuite/g++.dg/torture/pr90194.C @@ -0,0 +1,18 @@ +// { dg-do compile } +// { dg-additional-options "-g" } + +struct cb { + int yr; +}; + +void * +operator new (__SIZE_TYPE__, void *nq) +{ + return nq; +} + +void +af (int xn) +{ + new (&xn) cb { }; +} |