From: Richard Biener Date: Tue, 26 Apr 2011 10:12:34 +0000 (+0000) Subject: c-typeck.c (build_unary_op): Do not expand array-refs via pointer arithmetic. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e73a83fc7c03a209603e2607ec3be65adb197fa9;p=gcc.git c-typeck.c (build_unary_op): Do not expand array-refs via pointer arithmetic. 2011-04-26 Richard Guenther * c-typeck.c (build_unary_op): Do not expand array-refs via pointer arithmetic. Only adjust qualifiers for function types. From-SVN: r172958 --- diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index d8609d24e3f..3849352708c 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -3737,12 +3737,6 @@ build_unary_op (location_t location, tree op0 = TREE_OPERAND (arg, 0); if (!c_mark_addressable (op0)) return error_mark_node; - return build_binary_op (location, PLUS_EXPR, - (TREE_CODE (TREE_TYPE (op0)) == ARRAY_TYPE - ? array_to_pointer_conversion (location, - op0) - : op0), - TREE_OPERAND (arg, 1), 1); } /* Anything not already handled and not a true memory reference @@ -3769,10 +3763,11 @@ build_unary_op (location_t location, argtype = TREE_TYPE (arg); /* If the lvalue is const or volatile, merge that into the type - to which the address will point. This should only be needed + to which the address will point. This is only needed for function types. */ if ((DECL_P (arg) || REFERENCE_CLASS_P (arg)) - && (TREE_READONLY (arg) || TREE_THIS_VOLATILE (arg))) + && (TREE_READONLY (arg) || TREE_THIS_VOLATILE (arg)) + && TREE_CODE (argtype) == FUNCTION_TYPE) { int orig_quals = TYPE_QUALS (strip_array_types (argtype)); int quals = orig_quals; @@ -3782,9 +3777,6 @@ build_unary_op (location_t location, if (TREE_THIS_VOLATILE (arg)) quals |= TYPE_QUAL_VOLATILE; - gcc_assert (quals == orig_quals - || TREE_CODE (argtype) == FUNCTION_TYPE); - argtype = c_build_qualified_type (argtype, quals); }