diff options
author | Jason Merrill <jason@redhat.com> | 2020-03-04 17:30:58 -0500 |
---|---|---|
committer | Jason Merrill <jason@redhat.com> | 2020-03-04 17:33:10 -0500 |
commit | 831d4a690053599d2d0aa9713642b8513fdf8f5b (patch) | |
tree | 3c2b830cbbe6c47a7d7d4b4303ae17e164b23daf | |
parent | bde2e6e59829f746f3b1191ca4bfedf3313ad6eb (diff) | |
download | gcc-831d4a690053599d2d0aa9713642b8513fdf8f5b.zip gcc-831d4a690053599d2d0aa9713642b8513fdf8f5b.tar.gz gcc-831d4a690053599d2d0aa9713642b8513fdf8f5b.tar.bz2 |
c++: avoid ICE with __builtin_memset (PR90997).
warn_for_memset calls fold_for_warn, which calls fold_non_dependent_expr, so
also calling instantiate_non_dependent_expr here is undesirable.
gcc/cp/ChangeLog
2020-03-04 Jason Merrill <jason@redhat.com>
PR c++/90997
* semantics.c (finish_call_expr): Don't call
instantiate_non_dependent_expr before warn_for_memset.
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/semantics.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ext/builtin14.C | 4 |
3 files changed, 10 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 614844e..da873da 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2020-03-04 Jason Merrill <jason@redhat.com> + + PR c++/90997 + * semantics.c (finish_call_expr): Don't call + instantiate_non_dependent_expr before warn_for_memset. + 2020-03-02 Jason Merrill <jason@redhat.com> PR c++/86917 diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 0c727ea..4bfb5d1 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -2577,7 +2577,6 @@ finish_call_expr (tree fn, vec<tree, va_gc> **args, bool disallow_virtual, tree arg2 = (*orig_args)[2]; int literal_mask = ((literal_integer_zerop (arg1) << 1) | (literal_integer_zerop (arg2) << 2)); - arg2 = instantiate_non_dependent_expr (arg2); warn_for_memset (input_location, arg0, arg2, literal_mask); } diff --git a/gcc/testsuite/g++.dg/ext/builtin14.C b/gcc/testsuite/g++.dg/ext/builtin14.C new file mode 100644 index 0000000..38d5a39 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/builtin14.C @@ -0,0 +1,4 @@ +// PR c++/90997 + +template<class> void f () +{ __builtin_memset (0, 0, int(0.)); } |