aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/decl.c
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2017-05-24 23:16:59 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2017-05-24 23:16:59 +0100
commitd4a760d8c43fa10aa5b450b66f2f4bf67f898a8c (patch)
tree0b9e9d9dadfb3945f1b82de004c3c56971bdf0ed /gcc/cp/decl.c
parent3cd211af9989ca33f08c9d9d7c29ba7cb208b645 (diff)
downloadgcc-d4a760d8c43fa10aa5b450b66f2f4bf67f898a8c.zip
gcc-d4a760d8c43fa10aa5b450b66f2f4bf67f898a8c.tar.gz
gcc-d4a760d8c43fa10aa5b450b66f2f4bf67f898a8c.tar.bz2
PR c++/80544 strip cv-quals from cast results
gcc/cp: PR c++/80544 * tree.c (reshape_init): Use unqualified type for direct enum init. * typeck.c (maybe_warn_about_cast_ignoring_quals): New. (build_static_cast_1, build_reinterpret_cast_1): Strip cv-quals from non-class destination types. (build_const_cast_1): Strip cv-quals from destination types. (build_static_cast, build_reinterpret_cast, build_const_cast) (cp_build_c_cast): Add calls to maybe_warn_about_cast_ignoring_quals. gcc/testsuite: PR c++/80544 * g++.dg/expr/cast11.C: New test. From-SVN: r248432
Diffstat (limited to 'gcc/cp/decl.c')
-rw-r--r--gcc/cp/decl.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index afd47bb..3ff0130 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -6043,6 +6043,7 @@ reshape_init (tree type, tree init, tsubst_flags_t complain)
if (is_direct_enum_init (type, init))
{
tree elt = CONSTRUCTOR_ELT (init, 0)->value;
+ type = cv_unqualified (type);
if (check_narrowing (ENUM_UNDERLYING_TYPE (type), elt, complain))
return cp_build_c_cast (type, elt, tf_warning_or_error);
else