diff options
author | Alexandre Oliva <aoliva@redhat.com> | 2008-12-10 17:20:50 +0000 |
---|---|---|
committer | Alexandre Oliva <aoliva@gcc.gnu.org> | 2008-12-10 17:20:50 +0000 |
commit | aee91ff0bdb624e4a90149b035413be2cd1d6db9 (patch) | |
tree | 99930ce8db4d328a4055eff0144cb0036904bb01 /gcc/tree-sra.c | |
parent | 7ce8451d98680124fe012365631ca51d430e9b40 (diff) | |
download | gcc-aee91ff0bdb624e4a90149b035413be2cd1d6db9.zip gcc-aee91ff0bdb624e4a90149b035413be2cd1d6db9.tar.gz gcc-aee91ff0bdb624e4a90149b035413be2cd1d6db9.tar.bz2 |
re PR middle-end/38271 (Spurious / missing "... used uninitialized in this function" warning)
gcc/ChangeLog:
PR middle-end/38271
* tree-sra.c (sra_build_bf_assignment): Avoid warnings for
variables initialized from SRAed bit fields.
gcc/testsuite/ChangeLog:
PR middle-end/38271
* gcc.dg/torture/pr38271.c: New.
From-SVN: r142651
Diffstat (limited to 'gcc/tree-sra.c')
-rw-r--r-- | gcc/tree-sra.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c index aa16193..01c0e12 100644 --- a/gcc/tree-sra.c +++ b/gcc/tree-sra.c @@ -2354,14 +2354,17 @@ sra_build_bf_assignment (tree dst, tree src) tmp = var; if (!is_gimple_variable (tmp)) tmp = unshare_expr (var); + else + TREE_NO_WARNING (var) = true; tmp2 = make_rename_temp (utype, "SR"); if (INTEGRAL_TYPE_P (TREE_TYPE (var))) - stmt = gimple_build_assign (tmp2, fold_convert (utype, tmp)); + tmp = fold_convert (utype, tmp); else - stmt = gimple_build_assign (tmp2, fold_build1 (VIEW_CONVERT_EXPR, - utype, tmp)); + tmp = fold_build1 (VIEW_CONVERT_EXPR, utype, tmp); + + stmt = gimple_build_assign (tmp2, tmp); gimple_seq_add_stmt (&seq, stmt); } else |