Commit 6944d9dd by Steven Bosscher Committed by Steven Bosscher

tree-ssa-operands.c (get_expr_operands): Do not treat malloc attributed functions as pure or const.

	* tree-ssa-operands.c (get_expr_operands): Do not treat malloc
	attributed functions as pure or const.

From-SVN: r81951
parent 719df717
2004-05-17 Steven Bosscher <stevenb@suse.de>
* tree-ssa-operands.c (get_expr_operands): Do not treat malloc
attributed functions as pure or const.
2004-05-17 Frank Ch. Eigler <fche@redhat.com> 2004-05-17 Frank Ch. Eigler <fche@redhat.com>
* tree-mudflap.c (mx_register_decls): Tolerate decl trees resulting * tree-mudflap.c (mx_register_decls): Tolerate decl trees resulting
......
2004-05-17 Steven Bosscher <stevenb@suse.de>
* gcc.dg/tree-ssa/20040517-1.c: New test.
2004-05-15 Andrew Pinski <pinskia@physics.uc.edu> 2004-05-15 Andrew Pinski <pinskia@physics.uc.edu>
* gcc.dg/tree-ssa/20040514-1.c: Add '}' that was forgotten. * gcc.dg/tree-ssa/20040514-1.c: Add '}' that was forgotten.
......
/* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-ssa-vops" } */
int a;
extern void __attribute__ ((malloc)) *foo ();
void bar (void)
{
a = 1;
foo ();
if (a)
abort ();
}
/* We used to treat malloc functions like pure and const functions, but
malloc functions may clobber global memory. Only the function result
does not alias any other pointer.
Hence, we must have a VDEF for a before and after the call to foo(). */
/* { dg-final { scan-tree-dump-times "VDEF" 2 "ssa"} } */
...@@ -1023,12 +1023,11 @@ get_expr_operands (tree stmt, tree *expr_p, int flags, voperands_t prev_vops) ...@@ -1023,12 +1023,11 @@ get_expr_operands (tree stmt, tree *expr_p, int flags, voperands_t prev_vops)
if (bitmap_first_set_bit (call_clobbered_vars) >= 0) if (bitmap_first_set_bit (call_clobbered_vars) >= 0)
{ {
/* A 'pure' or a 'const' functions never call clobber anything.
A 'noreturn' function might, but since we don't return anyway
there is no point in recording that. */
if (!(call_flags if (!(call_flags
& (ECF_PURE & (ECF_PURE | ECF_CONST | ECF_NORETURN)))
| ECF_CONST
| ECF_NORETURN
| ECF_MALLOC
| ECF_MAY_BE_ALLOCA)))
add_call_clobber_ops (stmt, prev_vops); add_call_clobber_ops (stmt, prev_vops);
else if (!(call_flags & (ECF_CONST | ECF_NORETURN))) else if (!(call_flags & (ECF_CONST | ECF_NORETURN)))
add_call_read_ops (stmt, prev_vops); add_call_read_ops (stmt, prev_vops);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment