aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2020-01-26 00:25:19 -0500
committerJason Merrill <jason@redhat.com>2020-01-26 00:49:24 -0500
commitda11ffbba8741e085095f49037860de8e8701a1f (patch)
tree5fb8b93bdc6dda01d87d73544b5e864e700cd60b /gcc
parentd0683c187f1806b887ff8b7e476edbde992310ef (diff)
downloadgcc-da11ffbba8741e085095f49037860de8e8701a1f.zip
gcc-da11ffbba8741e085095f49037860de8e8701a1f.tar.gz
gcc-da11ffbba8741e085095f49037860de8e8701a1f.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. PR c++/90997 * semantics.c (finish_call_expr): Don't call instantiate_non_dependent_expr before warn_for_memset.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/semantics.c1
-rw-r--r--gcc/testsuite/g++.dg/ext/builtin14.C4
3 files changed, 10 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 0dc1ad2..0b17aba 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2020-01-26 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-01-25 Marek Polacek <polacek@redhat.com>
PR c++/93414 - poor diagnostic for dynamic_cast in constexpr context.
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index 3b88f15..a489e2c 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -2664,7 +2664,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.)); }