+2016-04-13 Alan Modra <amodra@gmail.com>
+
+ Backport from mainline
+ 2016-03-22 Patrick Palka <ppalka@gcc.gnu.org>
+ PR target/70107
+ PR c++/70096
+ * pt.c (tsubst_decl): Clear the DECL_MODE of the new decl.
+
2016-03-18 Jonathan Wakely <jwakely@redhat.com>
Backported from mainline
/* The initializer must not be expanded until it is required;
see [temp.inst]. */
DECL_INITIAL (r) = NULL_TREE;
+ if (VAR_P (r))
+ DECL_MODE (r) = VOIDmode;
if (CODE_CONTAINS_STRUCT (TREE_CODE (t), TS_DECL_WRTL))
SET_DECL_RTL (r, NULL);
DECL_SIZE (r) = DECL_SIZE_UNIT (r) = 0;
+2016-04-13 Alan Modra <amodra@gmail.com>
+
+ Backport from mainline
+ 2016-03-31 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+ * g++.dg/template/ptrmem30.C (read): Rename to data_read.
+ (Holder::foo): Reflect this.
+
+ 2016-03-22 Patrick Palka <ppalka@gcc.gnu.org>
+ PR c++/70096
+ * g++.dg/template/ptrmem30.C: New test.
+
2016-04-11 Alan Modra <amodra@gmail.com>
* gcc.target/powerpc/pr70117.c: New.
--- /dev/null
+// PR c++/70096
+// { dg-do run }
+
+int data_read;
+
+struct Holder
+{
+ void foo () { data_read = data; }
+ int data;
+};
+
+void
+poison_stack ()
+{
+ volatile char a[256];
+ __builtin_memset ((void *)a, 0xa, sizeof a);
+}
+
+template <typename F>
+void test1 ()
+{
+ Holder h;
+ h.data = 42;
+ F Holder::*fptr = &Holder::foo;
+ (h.*fptr)();
+}
+
+template <typename F>
+void test2 ()
+{
+ Holder h;
+ h.data = 42;
+ F Holder::*fptr1 = &Holder::foo;
+ F Holder::*fptr2 = fptr1;
+ (h.*fptr2)();
+}
+
+
+int main ()
+{
+ poison_stack ();
+ test1<void()>();
+ poison_stack ();
+ test2<void()>();
+}