aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2013-11-26 10:12:30 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2013-11-26 10:12:30 +0000
commitd2504d682b036c369b6068ed2bf471161464aef0 (patch)
treebab7c9238ed7c2ef897e1e1b7b47414a0ec2c78e
parent793c28b87fbb215df23a3e72d33a4ffa07899044 (diff)
downloadgcc-d2504d682b036c369b6068ed2bf471161464aef0.zip
gcc-d2504d682b036c369b6068ed2bf471161464aef0.tar.gz
gcc-d2504d682b036c369b6068ed2bf471161464aef0.tar.bz2
cvt.c (cp_convert_and_check): Avoid calling cp_convert unnecessarily.
2013-11-26 Paolo Carlini <paolo.carlini@oracle.com> * cvt.c (cp_convert_and_check): Avoid calling cp_convert unnecessarily. From-SVN: r205387
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/cvt.c3
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 64f9a23..143885c 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2013-11-26 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * cvt.c (cp_convert_and_check): Avoid calling cp_convert
+ unnecessarily.
+
2013-11-25 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/54485
diff --git a/gcc/cp/cvt.c b/gcc/cp/cvt.c
index c1dfdcf..ecec24a 100644
--- a/gcc/cp/cvt.c
+++ b/gcc/cp/cvt.c
@@ -630,7 +630,8 @@ cp_convert_and_check (tree type, tree expr, tsubst_flags_t complain)
{
tree folded = maybe_constant_value (expr);
tree stripped = folded;
- tree folded_result = cp_convert (type, folded, complain);
+ tree folded_result
+ = folded != expr ? cp_convert (type, folded, complain) : result;
/* maybe_constant_value wraps an INTEGER_CST with TREE_OVERFLOW in a
NOP_EXPR so that it isn't TREE_CONSTANT anymore. */