aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0024-except.c-build_noexcept_spec-Call-cxx_constant_value.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0024-except.c-build_noexcept_spec-Call-cxx_constant_value.patch')
-rw-r--r--meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0024-except.c-build_noexcept_spec-Call-cxx_constant_value.patch46
1 files changed, 46 insertions, 0 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0024-except.c-build_noexcept_spec-Call-cxx_constant_value.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0024-except.c-build_noexcept_spec-Call-cxx_constant_value.patch
new file mode 100644
index 0000000000..096ec080c9
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0024-except.c-build_noexcept_spec-Call-cxx_constant_value.patch
@@ -0,0 +1,46 @@
+From 3a987d8e4a8c885fe7fc54595ebdd82d5291e1e7 Mon Sep 17 00:00:00 2001
+From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
+Date: Tue, 29 Mar 2011 14:24:30 +0000
+Subject: [PATCH 024/200] * except.c (build_noexcept_spec): Call cxx_constant_value after
+ converting to bool.
+
+git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@171665 138bc75d-0d04-0410-961f-82ee72b054a4
+
+index c05e507..a814d67 100644
+--- a/gcc/cp/except.c
++++ b/gcc/cp/except.c
+@@ -1203,10 +1203,10 @@ build_noexcept_spec (tree expr, int complain)
+ it until instantiation. */
+ if (!processing_template_decl)
+ {
+- expr = cxx_constant_value (expr);
+ expr = perform_implicit_conversion_flags (boolean_type_node, expr,
+ complain,
+ LOOKUP_NORMAL);
++ expr = cxx_constant_value (expr);
+ }
+ if (expr == boolean_true_node)
+ return noexcept_true_spec;
+new file mode 100644
+index 0000000..7bf961b
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-noexcept5.C
+@@ -0,0 +1,15 @@
++// { dg-options -std=c++0x }
++
++struct booleable {
++ bool data;
++ constexpr explicit operator bool() { return data; }
++};
++
++constexpr booleable truthy_func() { return {true}; }
++
++void funky() noexcept(truthy_func()) {}
++
++int main() {
++ funky();
++ return 0;
++}
+--
+1.7.0.4
+