aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimplify.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2011-08-11 14:28:36 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2011-08-11 14:28:36 +0000
commit8d2b04104d36240ecb02beeab5afac2752237a12 (patch)
treeb10a9fb84133c6a18ce3929ae02f730bf26e7935 /gcc/gimplify.c
parent0f8de043406d8d477133894e84124f8ac4ad8c64 (diff)
downloadgcc-8d2b04104d36240ecb02beeab5afac2752237a12.zip
gcc-8d2b04104d36240ecb02beeab5afac2752237a12.tar.gz
gcc-8d2b04104d36240ecb02beeab5afac2752237a12.tar.bz2
re PR middle-end/50040 (missed warning: ‘x.y’ is used uninitialized in this function)
2011-08-11 Richard Guenther <rguenther@suse.de> PR middle-end/50040 * gimplify.c (gimplify_modify_expr_complex_part): Mark the load of the other piece with TREE_NO_WARNING. * tree-flow.h (warn_uninit): Adjust prototype. * tree-ssa.c (warn_uninit): Take uninitialized SSA name, the base variable and the expression that is used separately. Properly query all TREE_NO_WARNING flags. (struct walk_data): Remove. (warn_uninitialized_var): Likewise. (warn_uninitialized_vars): Do not walk gimple pieces but simply look at all SSA uses of the statement. Handle unused memory separately. * tree-ssa-uninit.c (warn_uninitialized_phi): Adjust. * g++.dg/warn/unit-1.C: Un-XFAIL. * gcc.dg/uninit-I.c: Likewise. From-SVN: r177667
Diffstat (limited to 'gcc/gimplify.c')
-rw-r--r--gcc/gimplify.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index 5376ca3..2668aa6 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -4483,6 +4483,7 @@ gimplify_modify_expr_complex_part (tree *expr_p, gimple_seq *pre_p,
ocode = code == REALPART_EXPR ? IMAGPART_EXPR : REALPART_EXPR;
other = build1 (ocode, TREE_TYPE (rhs), lhs);
+ TREE_NO_WARNING (other) = 1;
other = get_formal_tmp_var (other, pre_p);
realpart = code == REALPART_EXPR ? rhs : other;