diff options
-rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/semantics.c | 10 |
2 files changed, 8 insertions, 6 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 560722c..4a5c36f 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2012-05-04 Paolo Carlini <paolo.carlini@oracle.com> + * semantics.c (cxx_eval_constant_expression, case CONVERT_EXPR): Tidy. + +2012-05-04 Paolo Carlini <paolo.carlini@oracle.com> + PR c++/53166 * pt.c (instantiate_class_template_1): Increase / decrease c_inhibit_evaluation_warnings around the tsubst_expr call diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 90378dc..fbb26b2 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -7757,18 +7757,16 @@ cxx_eval_constant_expression (const constexpr_call *call, tree t, case NOP_EXPR: { tree oldop = TREE_OPERAND (t, 0); - tree op = oldop; - tree to = TREE_TYPE (t); - op = cxx_eval_constant_expression (call, TREE_OPERAND (t, 0), - allow_non_constant, addr, - non_constant_p); + tree op = cxx_eval_constant_expression (call, oldop, + allow_non_constant, addr, + non_constant_p); if (*non_constant_p) return t; if (op == oldop) /* We didn't fold at the top so we could check for ptr-int conversion. */ return fold (t); - r = fold_build1 (TREE_CODE (t), to, op); + r = fold_build1 (TREE_CODE (t), TREE_TYPE (t), op); /* Conversion of an out-of-range value has implementation-defined behavior; the language considers it different from arithmetic overflow, which is undefined. */ |