summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/torture/pr44069.C
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/g++.dg/torture/pr44069.C')
-rw-r--r--gcc/testsuite/g++.dg/torture/pr44069.C25
1 files changed, 25 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/torture/pr44069.C b/gcc/testsuite/g++.dg/torture/pr44069.C
new file mode 100644
index 000000000..99fcd173e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr44069.C
@@ -0,0 +1,25 @@
+/* { dg-do run } */
+
+template <unsigned R, unsigned C>
+class M {
+public:
+ M(const int* arr) {
+ for (unsigned long r = 0; r < R; ++r)
+ for (unsigned long c = 0; c < C; ++c)
+ m[r*C+c] = arr[r*C+c];
+ }
+ int operator()(unsigned r, unsigned c) const
+ { return m[r*C+c]; }
+private:
+ int m[R*C];
+};
+extern "C" void abort (void);
+int main()
+{
+ int vals[2][2] = { { 1, 2 }, { 5, 6 } };
+ M<2,2> m( &(vals[0][0]) );
+ if (m(1,0) != 5)
+ abort ();
+ return 0;
+}
+