summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/tree-ssa/20030708-1.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.dg/tree-ssa/20030708-1.c')
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/20030708-1.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20030708-1.c b/gcc/testsuite/gcc.dg/tree-ssa/20030708-1.c
new file mode 100644
index 000000000..b3be8a939
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/20030708-1.c
@@ -0,0 +1,43 @@
+/* { dg-do compile } */
+/* { dg-options "-O1 -fdump-tree-dom2" } */
+extern void abort (void);
+struct rtx_def;
+typedef struct rtx_def *rtx;
+enum rtx_code
+{
+ CALL_INSN,
+ EXPR_LIST,
+ NOTE,
+ LAST = 256
+};
+
+struct rtx_def
+{
+
+ enum rtx_code code:16;
+};
+
+int
+nonlocal_mentioned_p (x)
+ rtx x;
+{
+ if (x->code == CALL_INSN)
+ {
+ rtx const _rtx = ((x));
+ if (_rtx->code != CALL_INSN
+ && _rtx->code != NOTE
+ && _rtx->code != EXPR_LIST)
+ abort ();
+ }
+
+ blah (&x);
+}
+
+/* There should be no casts to a short unsigned int since the entire
+ set of conditionals should optimize away. */
+/* { dg-final { scan-tree-dump-times "\\(short unsigned int\\)" 0 "dom2"} } */
+
+/* There should be no IF conditionals. */
+/* { dg-final { scan-tree-dump-times "if " 0 "dom2"} } */
+
+/* { dg-final { cleanup-tree-dump "dom2" } } */