aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorMichael Matz <matz@suse.de>2010-03-18 12:20:50 +0000
committerMichael Matz <matz@gcc.gnu.org>2010-03-18 12:20:50 +0000
commiteb45755f642d26039a0422bfbc457b08c6a3fcde (patch)
treea7e63774db500194c99a26efe5321f3fdbbffe5d /gcc/testsuite
parent8269067b2c125976c2f728ef04d99bdb6ee31267 (diff)
downloadgcc-eb45755f642d26039a0422bfbc457b08c6a3fcde.zip
gcc-eb45755f642d26039a0422bfbc457b08c6a3fcde.tar.gz
gcc-eb45755f642d26039a0422bfbc457b08c6a3fcde.tar.bz2
re PR tree-optimization/43402 (dom1 miscompiles binary search)
PR tree-optimization/43402 * tree-cfgcleanup.c (cleanup_control_expr_graph): Don't follow PHI chains of ssa names registered for update. testsuite/ * gcc.dg/pr43402.c: New testcase. From-SVN: r157538
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr43402.c58
2 files changed, 63 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5797626..bc56c91 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2010-03-18 Michael Matz <matz@suse.de>
+
+ PR tree-optimization/43402
+ * gcc.dg/pr43402.c: New testcase.
+
2010-03-17 Peter Bergner <bergner@vnet.ibm.com>
PR target/42427
diff --git a/gcc/testsuite/gcc.dg/pr43402.c b/gcc/testsuite/gcc.dg/pr43402.c
new file mode 100644
index 0000000..82234c7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr43402.c
@@ -0,0 +1,58 @@
+/* { dg-do run } */
+/* { dg-options "-O1 -fno-inline" } */
+extern void abort (void);
+
+static int something;
+
+static int * converterData[2]={
+ &something, &something,
+};
+
+static struct {
+ const char *name;
+ int type;
+} const cnvNameType[] = {
+ { "bocu1", 1 },
+ { "utf7", 1 },
+ { "utf8", 1 }
+};
+
+
+const int * getAlgorithmicTypeFromName(const char *realName);
+const int *
+getAlgorithmicTypeFromName(const char *realName)
+{
+ unsigned mid, start, limit;
+ unsigned lastMid;
+ int result;
+ start = 0;
+ limit = sizeof(cnvNameType)/sizeof(cnvNameType[0]);
+ mid = limit;
+ lastMid = 0xffffffff;
+
+ for (;;) {
+ mid = (start + limit) / 2;
+ if (lastMid == mid) { /* Have we moved? */
+ break; /* We haven't moved, and it wasn't found. */
+ }
+ lastMid = mid;
+ result = __builtin_strcmp(realName, cnvNameType[mid].name);
+
+ if (result < 0) {
+ limit = mid;
+ } else if (result > 0) {
+ start = mid;
+ } else {
+ return converterData[cnvNameType[mid].type];
+ }
+ }
+
+ return 0;
+}
+
+int main (void)
+{
+ if (!getAlgorithmicTypeFromName ("utf8"))
+ abort ();
+ return 0;
+}