aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimplify.c
diff options
context:
space:
mode:
authorPaolo Bonzini <bonzini@gnu.org>2005-09-29 14:53:39 +0000
committerPaolo Bonzini <bonzini@gcc.gnu.org>2005-09-29 14:53:39 +0000
commit02eb875fcf9775463bd0f7b26d09e6fc41d09893 (patch)
treefa0ae259feba322798f38fbed7affb8907323e43 /gcc/gimplify.c
parent090037799cc3bc47500e77ed0b767b8d21bec1aa (diff)
downloadgcc-02eb875fcf9775463bd0f7b26d09e6fc41d09893.zip
gcc-02eb875fcf9775463bd0f7b26d09e6fc41d09893.tar.gz
gcc-02eb875fcf9775463bd0f7b26d09e6fc41d09893.tar.bz2
re PR c/21419 (Accepts writting to const via asm)
gcc: 2005-09-29 Paolo Bonzini <bonzini@gnu.org> PR c/21419 * gimplify.c (gimplify_asm_expr): Raise an error if an output is read-only. testsuite: 2005-09-29 Paolo Bonzini <bonzini@gnu.org> PR c/21419 * gcc.dg/pr21419.c: New test. From-SVN: r104774
Diffstat (limited to 'gcc/gimplify.c')
-rw-r--r--gcc/gimplify.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index 42b8740..e5d50e2 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -3544,6 +3544,12 @@ gimplify_asm_expr (tree *expr_p, tree *pre_p, tree *post_p)
parse_output_constraint (&constraint, i, 0, 0,
&allows_mem, &allows_reg, &is_inout);
+ if (TYPE_READONLY (TREE_TYPE (TREE_VALUE (link))))
+ {
+ error ("invalid lvalue in asm output %d", i);
+ ret = GS_ERROR;
+ }
+
if (!allows_reg && allows_mem)
lang_hooks.mark_addressable (TREE_VALUE (link));