http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59032
vries at gcc dot gnu.org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |vries at gcc dot gnu.org
--- Comment #2 from vries at gcc dot gnu.org ---
Tentative patch:
...
diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index bcb8782..8566e58 100644
--- a/gcc/cp/typeck.c
+++ b/gcc/cp/typeck.c
@@ -5665,7 +5665,8 @@ cp_build_unary_op (enum tree_code code, tree xarg, int
noconvert,
/* Report invalid types. */
- if (!(arg = build_expr_type_conversion (WANT_ARITH | WANT_POINTER,
+ if (!(arg = build_expr_type_conversion (WANT_INT | WANT_FLOAT
+ | WANT_POINTER,
arg, true)))
{
if (code == PREINCREMENT_EXPR)
...
WANT_ARITH is defined as:
...
#define WANT_ARITH (WANT_INT | WANT_FLOAT | WANT_VECTOR_OR_COMPLEX)
...
so the patch effectively removes WANT_VECTOR_OR_COMPLEX. AFAIU the COMPLEX case
is already handled at this point, so there shouldn't be any effect for those.
This patch brings back the old error message:
...
test.c: In function ‘void foo()’:
test.c:4:5: error: no pre-increment operator for type
++v;
^
...