aboutsummaryrefslogtreecommitdiffstats
path: root/meta-oe/recipes-devtools/gcc/gcc-4.6/gcc-4_6-branch-backports/0086-PR-c-48450.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-oe/recipes-devtools/gcc/gcc-4.6/gcc-4_6-branch-backports/0086-PR-c-48450.patch')
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.6/gcc-4_6-branch-backports/0086-PR-c-48450.patch80
1 files changed, 0 insertions, 80 deletions
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.6/gcc-4_6-branch-backports/0086-PR-c-48450.patch b/meta-oe/recipes-devtools/gcc/gcc-4.6/gcc-4_6-branch-backports/0086-PR-c-48450.patch
deleted file mode 100644
index 0b496311ef..0000000000
--- a/meta-oe/recipes-devtools/gcc/gcc-4.6/gcc-4_6-branch-backports/0086-PR-c-48450.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From a5e7415bfbe41941768106dc5819bf3fff1b8435 Mon Sep 17 00:00:00 2001
-From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
-Date: Fri, 8 Apr 2011 15:01:50 +0000
-Subject: [PATCH] PR c++/48450
- * c-family/c-common.c (c_common_truthvalue_conversion): Don't ignore
- conversion from C++0x scoped enum.
- * cp/cvt.c (ocp_convert): Handle converting scoped enum to bool.
-
-git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172191 138bc75d-0d04-0410-961f-82ee72b054a4
-
-index c0c01b2..0be3996 100644
---- a/gcc/c-family/c-common.c
-+++ b/gcc/c-family/c-common.c
-@@ -3938,16 +3938,25 @@ c_common_truthvalue_conversion (location_t location, tree expr)
- }
-
- CASE_CONVERT:
-- /* Don't cancel the effect of a CONVERT_EXPR from a REFERENCE_TYPE,
-- since that affects how `default_conversion' will behave. */
-- if (TREE_CODE (TREE_TYPE (expr)) == REFERENCE_TYPE
-- || TREE_CODE (TREE_TYPE (TREE_OPERAND (expr, 0))) == REFERENCE_TYPE)
-- break;
-- /* If this is widening the argument, we can ignore it. */
-- if (TYPE_PRECISION (TREE_TYPE (expr))
-- >= TYPE_PRECISION (TREE_TYPE (TREE_OPERAND (expr, 0))))
-- return c_common_truthvalue_conversion (location,
-- TREE_OPERAND (expr, 0));
-+ {
-+ tree totype = TREE_TYPE (expr);
-+ tree fromtype = TREE_TYPE (TREE_OPERAND (expr, 0));
-+
-+ /* Don't cancel the effect of a CONVERT_EXPR from a REFERENCE_TYPE,
-+ since that affects how `default_conversion' will behave. */
-+ if (TREE_CODE (totype) == REFERENCE_TYPE
-+ || TREE_CODE (fromtype) == REFERENCE_TYPE)
-+ break;
-+ /* Don't strip a conversion from C++0x scoped enum, since they
-+ don't implicitly convert to other types. */
-+ if (TREE_CODE (fromtype) == ENUMERAL_TYPE
-+ && ENUM_IS_SCOPED (fromtype))
-+ break;
-+ /* If this isn't narrowing the argument, we can ignore it. */
-+ if (TYPE_PRECISION (totype) >= TYPE_PRECISION (fromtype))
-+ return c_common_truthvalue_conversion (location,
-+ TREE_OPERAND (expr, 0));
-+ }
- break;
-
- case MODIFY_EXPR:
-index 8ab0001..290b926 100644
---- a/gcc/cp/cvt.c
-+++ b/gcc/cp/cvt.c
-@@ -727,7 +727,13 @@ ocp_convert (tree type, tree expr, int convtype, int flags)
- return error_mark_node;
- }
- if (code == BOOLEAN_TYPE)
-- return cp_truthvalue_conversion (e);
-+ {
-+ /* We can't implicitly convert a scoped enum to bool, so convert
-+ to the underlying type first. */
-+ if (SCOPED_ENUM_P (intype) && (convtype & CONV_STATIC))
-+ e = convert (ENUM_UNDERLYING_TYPE (intype), e);
-+ return cp_truthvalue_conversion (e);
-+ }
-
- converted = fold_if_not_in_template (convert_to_integer (type, e));
-
-new file mode 100644
-index 0000000..10e510b
---- /dev/null
-+++ b/gcc/testsuite/g++.dg/cpp0x/enum9.C
-@@ -0,0 +1,5 @@
-+// { dg-options -std=c++0x }
-+
-+enum class E { };
-+E f();
-+bool b2 = static_cast<bool>(f());
---
-1.7.0.4
-