From: Jakub Jelinek Date: Tue, 30 May 2017 07:53:35 +0000 (+0200) Subject: backport: re PR c++/78949 (incorrect "unused variable" warning with SSE2) X-Git-Tag: releases/gcc-5.5.0~275 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=01a4072b28f06bff939d1166c626bf99f0e19970;p=thirdparty%2Fgcc.git backport: re PR c++/78949 (incorrect "unused variable" warning with SSE2) Backported from mainline 2017-01-04 Jakub Jelinek PR c++/78949 * typeck.c (cp_build_unary_op): Call mark_rvalue_use on arg if it has vector type. * c-c++-common/Wunused-var-16.c: New test. From-SVN: r248637 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index b0fbf05a9996..52a1d0e5b906 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,6 +1,12 @@ 2017-05-30 Jakub Jelinek Backported from mainline + 2017-01-04 Jakub Jelinek + + PR c++/78949 + * typeck.c (cp_build_unary_op): Call mark_rvalue_use on arg if it has + vector type. + 2016-12-02 Jakub Jelinek PR c++/78649 diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 669f54141387..e3ba6077c09e 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -5700,6 +5700,8 @@ cp_build_unary_op (enum tree_code code, tree xarg, int noconvert, errstring = _("wrong type argument to bit-complement"); else if (!noconvert && CP_INTEGRAL_TYPE_P (TREE_TYPE (arg))) arg = cp_perform_integral_promotions (arg, complain); + else if (!noconvert && VECTOR_TYPE_P (TREE_TYPE (arg))) + arg = mark_rvalue_use (arg); break; case ABS_EXPR: diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 51e63c6bd2a3..9424d657d507 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2017-05-30 Jakub Jelinek Backported from mainline + 2017-01-04 Jakub Jelinek + + PR c++/78949 + * c-c++-common/Wunused-var-16.c: New test. + 2016-12-21 Jakub Jelinek PR fortran/78866 diff --git a/gcc/testsuite/c-c++-common/Wunused-var-16.c b/gcc/testsuite/c-c++-common/Wunused-var-16.c new file mode 100644 index 000000000000..98e66a723809 --- /dev/null +++ b/gcc/testsuite/c-c++-common/Wunused-var-16.c @@ -0,0 +1,15 @@ +/* PR c++/78949 */ +/* { dg-do compile } */ +/* { dg-options "-Wunused" } */ + +typedef unsigned char V __attribute__((vector_size(16))); +V v; + +void +foo () +{ + V y = {}; + V x = {}; // { dg-bogus "set but not used" } + y &= ~x; + v = y; +}