aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.4.3/gcc/testsuite
diff options
context:
space:
mode:
authorJing Yu <jingyu@google.com>2010-11-04 17:50:54 -0700
committerJing Yu <jingyu@google.com>2010-11-04 17:50:54 -0700
commitb6b198cac722a8dcaa046f0589fe2c2c7caa6a01 (patch)
tree0e3c2c0f861f257f1fb63b0e1d9f7ccce8d065ea /gcc-4.4.3/gcc/testsuite
parenta4d9421024ed3f70aede5b11f977d264eb69bf61 (diff)
downloadtoolchain_gcc-b6b198cac722a8dcaa046f0589fe2c2c7caa6a01.tar.gz
toolchain_gcc-b6b198cac722a8dcaa046f0589fe2c2c7caa6a01.tar.bz2
toolchain_gcc-b6b198cac722a8dcaa046f0589fe2c2c7caa6a01.zip
Backport upstream 4.6 patches to fix 2 gcc bugs.
Fix a bad interaction of inliner x return slot optimization x named value optimization Replace tst instruction with lsls for a single bit test Change-Id: I30c212d9e99c79eae182da66b97d9d9f4d738faf
Diffstat (limited to 'gcc-4.4.3/gcc/testsuite')
-rw-r--r--gcc-4.4.3/gcc/testsuite/g++.dg/torture/pr45709-2.C20
-rw-r--r--gcc-4.4.3/gcc/testsuite/g++.dg/torture/pr45709.C19
2 files changed, 39 insertions, 0 deletions
diff --git a/gcc-4.4.3/gcc/testsuite/g++.dg/torture/pr45709-2.C b/gcc-4.4.3/gcc/testsuite/g++.dg/torture/pr45709-2.C
new file mode 100644
index 000000000..1f6a2344f
--- /dev/null
+++ b/gcc-4.4.3/gcc/testsuite/g++.dg/torture/pr45709-2.C
@@ -0,0 +1,20 @@
+// { dg-do compile }
+
+struct Region {
+ int storage[4];
+ int count;
+};
+static inline Region subtract(int lhs)
+{
+ Region reg;
+ int* storage = reg.storage;
+ int* storage2 = reg.storage;
+ if (lhs > 0)
+ storage++, storage2--;
+ reg.count = storage - reg.storage + storage2 - reg.storage;
+ return reg;
+}
+void bar(int a)
+{
+ const Region copyBack(subtract(a));
+}
diff --git a/gcc-4.4.3/gcc/testsuite/g++.dg/torture/pr45709.C b/gcc-4.4.3/gcc/testsuite/g++.dg/torture/pr45709.C
new file mode 100644
index 000000000..1584ec76a
--- /dev/null
+++ b/gcc-4.4.3/gcc/testsuite/g++.dg/torture/pr45709.C
@@ -0,0 +1,19 @@
+// { dg-do compile }
+
+struct Region {
+ int storage[4];
+ int count;
+};
+static inline Region subtract(int lhs)
+{
+ Region reg;
+ int* storage = reg.storage;
+ if (lhs > 0)
+ storage++;
+ reg.count = storage - reg.storage;
+ return reg;
+}
+void bar(int a)
+{
+ const Region copyBack(subtract(a));
+}