summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/tree-ssa/20030714-1.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.dg/tree-ssa/20030714-1.c')
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/20030714-1.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20030714-1.c b/gcc/testsuite/gcc.dg/tree-ssa/20030714-1.c
new file mode 100644
index 000000000..0225d58a4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/20030714-1.c
@@ -0,0 +1,46 @@
+/* { dg-do compile } */
+/* { dg-options "-O1 -fdump-tree-dom2" } */
+
+struct rtx_def;
+typedef struct rtx_def *rtx;
+enum rtx_code
+{
+ REG,
+ LAST_AND_UNUSED_RTX_CODE = 256
+};
+typedef union rtunion_def rtunion;
+struct rtx_def
+{
+ enum rtx_code code:16;
+ unsigned frame_related:1;
+};
+
+static rtx
+find_base_value (src)
+ rtx src;
+{
+ rtx temp;
+ rtx src_0, src_2;
+ rtx src_1, src_3;
+
+ if ((src_0->code == REG) && (({src_2;})->frame_related))
+ return find_base_value (src_0);
+ if ((src_1->code == REG) && (({ src_3;})->frame_related))
+ return find_base_value (src_1);
+ if (src_0->code == REG)
+ find_base_value (src_0);
+ if (src_1->code == REG)
+ find_base_value (src_1);
+}
+
+rtx
+find_base_value_wrapper (src)
+ rtx src;
+{
+ return find_base_value (src);
+}
+
+/* There should be no casts to short unsigned int. */
+/* { dg-final { scan-tree-dump-times "\\(short unsigned int\\)" 0 "dom2"} } */
+
+/* { dg-final { cleanup-tree-dump "dom2" } } */