aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/pr23200.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2011-02-04 16:50:51 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2011-02-04 16:50:51 +0100
commitdcde5957ce2d3465028da302a878d93bea9fc41f (patch)
tree414dfa9293092030de0a06170c839b69d92e5b67 /gcc/testsuite/gcc.dg/pr23200.c
parenta64a8e5a1375676bad507dd424e0a1c4850a525b (diff)
downloadgcc-dcde5957ce2d3465028da302a878d93bea9fc41f.zip
gcc-dcde5957ce2d3465028da302a878d93bea9fc41f.tar.gz
gcc-dcde5957ce2d3465028da302a878d93bea9fc41f.tar.bz2
re PR inline-asm/23200 (rejects "i"(&var + 1))
PR inline-asm/23200 * tree-ssa-ter.c (is_replaceable_p): Add TER argument. Don't do bb, locus and block comparison and disallow loads if it is not set. (stmt_is_replaceable_p): New function. (process_replaceable, find_replaceable_in_bb): Adjust is_replaceable_p callers. * expr.c (expand_expr_real_1) <case SSA_NAME>: If get_gimple_for_ssa_name try for EXPAND_INITIALIZER harder to use SSA_NAME_DEF_STMT. * tree-flow.h (stmt_is_replaceable_p): New prototype. * gcc.dg/pr23200.c: New test. From-SVN: r169831
Diffstat (limited to 'gcc/testsuite/gcc.dg/pr23200.c')
-rw-r--r--gcc/testsuite/gcc.dg/pr23200.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/pr23200.c b/gcc/testsuite/gcc.dg/pr23200.c
new file mode 100644
index 0000000..56bf59c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr23200.c
@@ -0,0 +1,22 @@
+/* PR inline-asm/23200 */
+/* { dg-do compile { target nonpic } } */
+/* { dg-options "-O0" } */
+
+static char var;
+
+void
+foo (void)
+{
+ asm volatile ("" :: "i" (&var + 1));
+}
+
+typedef int T[];
+typedef T *P;
+
+int var2;
+
+void
+bar (void)
+{
+ asm volatile ("" :: "i"(&(*(P)&var2)[1]));
+}