fixed PR/c++ 81589

This commit is contained in:
jeff200902 2020-10-28 14:50:56 +08:00
parent 9b05af9c73
commit fa453cf70d
2 changed files with 48 additions and 2 deletions

View File

@ -0,0 +1,42 @@
From 57b9683f0ce55a410c567fcb2dc365a2cc848d6a Mon Sep 17 00:00:00 2001
From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Mon, 26 Feb 2018 06:09:07 +0000
Subject: [PATCH] PR c++/81589 - error with is_trivially_constructible.
* method.c (constructible_expr): Set cp_unevaluated.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@257981 138bc75d-0d04-0410-961f-82ee72b054a4
---
gcc/cp/method.c | 1 +
gcc/testsuite/g++.dg/ext/is_trivially_constructible6.C | 10 ++++++++++
2 files changed, 11 insertions(+)
create mode 100644 gcc/testsuite/g++.dg/ext/is_trivially_constructible6.C
diff --git a/gcc/cp/method.c b/gcc/cp/method.c
index 59ad43f73fee..a2d4c071efa3 100644
--- a/gcc/cp/method.c
+++ b/gcc/cp/method.c
@@ -1165,6 +1165,7 @@ constructible_expr (tree to, tree from)
{
tree ctype = to;
vec<tree, va_gc> *args = NULL;
+ cp_unevaluated cp_uneval_guard;
if (TREE_CODE (to) != REFERENCE_TYPE)
to = cp_build_reference_type (to, /*rval*/false);
tree ob = build_stub_object (to);
diff --git a/gcc/testsuite/g++.dg/ext/is_trivially_constructible6.C b/gcc/testsuite/g++.dg/ext/is_trivially_constructible6.C
new file mode 100644
index 000000000000..10a8dfbb8f0b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/is_trivially_constructible6.C
@@ -0,0 +1,10 @@
+// PR c++/81589
+
+template <typename k>
+struct z {
+ z() {
+ k::error;
+ }
+};
+
+int x = __is_trivially_constructible(z<int>);

View File

@ -36,7 +36,7 @@
Summary: Various compilers (C, C++, Objective-C, Java, ...)
Name: gcc
Version: 7.3.0
Release: %{gcc_release}.34
Release: %{gcc_release}.35
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
Group: Development/Languages
#Source0: hcc-aarch64-linux-release.tar.bz2
@ -84,7 +84,7 @@ Patch29: Big-endian-union-bitfield-bugfix.patch
Patch31: fstack-clash-protection.patch
Patch34: mark-pattern-as-clobbering-CC-REGNUM.patch
Patch35: turn-on-funwind-tables-by-default.patch
Patch36: fix-trivially_constructible-PR81589.patch
#AutoReqProv: off
AutoReq: true
@ -508,6 +508,7 @@ package or when debugging this package.
%patch31 -p1
%patch34 -p1
%patch35 -p1
%patch36 -p1
%if 0%{?_enable_debug_packages}
cat > split-debuginfo.sh <<\EOF
@ -3140,6 +3141,9 @@ fi
%changelog
* Wed Oct 28 2020 jeff200902 <gaojianxing@huawei.com> - 7.3.0-20190804.35
- fixed PR c++/81589, error with is_trivially_constructible.
* Tue Aug 21 2020 openEuler Buildteam <buildteam@openeuler.org> - 7.3.0-20190804.34
- Type:rebuild
- ID:NA