diff options
author | Khem Raj <raj.khem@gmail.com> | 2011-06-12 20:56:57 -0700 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-06-14 15:29:15 +0100 |
commit | ec9b6d061b8495b9316ae90e5a71a499ef2873ee (patch) | |
tree | dc922c9ddd98f937eb2095b07f6c3b5043e3a491 /meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0332-PR-c-48292.patch | |
parent | fbc60cc5ba2284bfcaea8c82001a49b7795cc2a2 (diff) | |
download | poky-ec9b6d061b8495b9316ae90e5a71a499ef2873ee.tar.gz |
gcc-4.6.0: Bring in patches from FSF 4.6 branch
This brings in new patches from 4.6 release branch
updates the comment section of existing branch to not
contain patch numbers.
Tested build on qemu for arm ppc mips x86 and x86_64
(From OE-Core rev: 3968f33b6542cf20cf63cf49bfbc033bd2486295)
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0332-PR-c-48292.patch')
-rw-r--r-- | meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0332-PR-c-48292.patch | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0332-PR-c-48292.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0332-PR-c-48292.patch new file mode 100644 index 0000000000..9bc5588324 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0332-PR-c-48292.patch | |||
@@ -0,0 +1,71 @@ | |||
1 | From 8b1d0e0f8d8667c8f71aa00080108115d6891354 Mon Sep 17 00:00:00 2001 | ||
2 | From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | ||
3 | Date: Wed, 25 May 2011 15:26:14 +0000 | ||
4 | Subject: [PATCH] PR c++/48292 | ||
5 | * pt.c (tsubst_decl) [PARM_DECL]: Handle partial instantiation of | ||
6 | function parameter pack. | ||
7 | (tsubst_pack_expansion): Likewise. | ||
8 | |||
9 | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174207 138bc75d-0d04-0410-961f-82ee72b054a4 | ||
10 | |||
11 | index b16d229..d379a8c 100644 | ||
12 | --- a/gcc/cp/pt.c | ||
13 | +++ b/gcc/cp/pt.c | ||
14 | @@ -8690,7 +8690,12 @@ tsubst_pack_expansion (tree t, tree args, tsubst_flags_t complain, | ||
15 | have the wrong value for a recursive call. Just make a | ||
16 | dummy decl, since it's only used for its type. */ | ||
17 | arg_pack = tsubst_decl (parm_pack, args, complain); | ||
18 | - arg_pack = make_fnparm_pack (arg_pack); | ||
19 | + if (arg_pack && FUNCTION_PARAMETER_PACK_P (arg_pack)) | ||
20 | + /* Partial instantiation of the parm_pack, we can't build | ||
21 | + up an argument pack yet. */ | ||
22 | + arg_pack = NULL_TREE; | ||
23 | + else | ||
24 | + arg_pack = make_fnparm_pack (arg_pack); | ||
25 | } | ||
26 | } | ||
27 | else | ||
28 | @@ -9780,14 +9785,14 @@ tsubst_decl (tree t, tree args, tsubst_flags_t complain) | ||
29 | if (DECL_TEMPLATE_PARM_P (t)) | ||
30 | SET_DECL_TEMPLATE_PARM_P (r); | ||
31 | |||
32 | - /* An argument of a function parameter pack is not a parameter | ||
33 | - pack. */ | ||
34 | - FUNCTION_PARAMETER_PACK_P (r) = false; | ||
35 | - | ||
36 | if (expanded_types) | ||
37 | /* We're on the Ith parameter of the function parameter | ||
38 | pack. */ | ||
39 | { | ||
40 | + /* An argument of a function parameter pack is not a parameter | ||
41 | + pack. */ | ||
42 | + FUNCTION_PARAMETER_PACK_P (r) = false; | ||
43 | + | ||
44 | /* Get the Ith type. */ | ||
45 | type = TREE_VEC_ELT (expanded_types, i); | ||
46 | |||
47 | new file mode 100644 | ||
48 | index 0000000..0ec69af | ||
49 | --- /dev/null | ||
50 | +++ b/gcc/testsuite/g++.dg/cpp0x/variadic109.C | ||
51 | @@ -0,0 +1,17 @@ | ||
52 | +// PR c++/48292 | ||
53 | +// { dg-options -std=c++0x } | ||
54 | + | ||
55 | +template <typename... Args> int g(Args...); | ||
56 | + | ||
57 | +template <int N = 0> | ||
58 | +struct A | ||
59 | +{ | ||
60 | + template <typename... Args> | ||
61 | + static auto f(Args... args) -> decltype(g(args...)); | ||
62 | +}; | ||
63 | + | ||
64 | +int main() | ||
65 | +{ | ||
66 | + A<>::f(); | ||
67 | + return 0; | ||
68 | +} | ||
69 | -- | ||
70 | 1.7.0.4 | ||
71 | |||