re PR tree-optimization/33992 (Miscompiles function with inlining, breaks profiledbootstrap)
2008-02-11 Uros Bizjak <ubizjak@gmail.com> Richard Guenther <rguenther@suse.de> PR tree-optimization/33992 * tree-ssa-loop-im.c (rewrite_bittest): Fixup the type of the zero we compare against. * gcc.c-torture/execute/pr33992.c: New testcase. Co-Authored-By: Richard Guenther <rguenther@suse.de> From-SVN: r132234
This commit is contained in:
parent
35f1ca2f84
commit
a6e2d11207
@ -1,3 +1,10 @@
|
|||||||
|
2008-02-11 Uros Bizjak <ubizjak@gmail.com>
|
||||||
|
Richard Guenther <rguenther@suse.de>
|
||||||
|
|
||||||
|
PR tree-optimization/33992
|
||||||
|
* tree-ssa-loop-im.c (rewrite_bittest): Fixup the type of
|
||||||
|
the zero we compare against.
|
||||||
|
|
||||||
2008-02-09 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
|
2008-02-09 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
|
||||||
|
|
||||||
PR middle_end/34150
|
PR middle_end/34150
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
2008-02-11 Uros Bizjak <ubizjak@gmail.com>
|
||||||
|
Richard Guenther <rguenther@suse.de>
|
||||||
|
|
||||||
|
PR tree-optimization/33992
|
||||||
|
* gcc.c-torture/execute/pr33992.c: New testcase.
|
||||||
|
|
||||||
2008-02-10 Thomas Koenig <tkoenig@gcc.gnu.org>
|
2008-02-10 Thomas Koenig <tkoenig@gcc.gnu.org>
|
||||||
|
|
||||||
* gfortran.dg/streamio_14.f90: New test.
|
* gfortran.dg/streamio_14.f90: New test.
|
||||||
|
38
gcc/testsuite/gcc.c-torture/execute/pr33992.c
Normal file
38
gcc/testsuite/gcc.c-torture/execute/pr33992.c
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
extern void abort ();
|
||||||
|
|
||||||
|
void __attribute__((noinline))
|
||||||
|
bar (unsigned long long i)
|
||||||
|
{
|
||||||
|
if (i)
|
||||||
|
abort ();
|
||||||
|
}
|
||||||
|
|
||||||
|
void __attribute__((always_inline))
|
||||||
|
foo (unsigned long long *r)
|
||||||
|
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; ; i++)
|
||||||
|
if (*r & ((unsigned long long)1 << (63 - i)))
|
||||||
|
break;
|
||||||
|
|
||||||
|
bar (i);
|
||||||
|
}
|
||||||
|
|
||||||
|
void __attribute__((noinline))
|
||||||
|
do_test (unsigned long long *r)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < 2; ++i)
|
||||||
|
foo (r);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
unsigned long long r = 0x8000000000000001ull;
|
||||||
|
|
||||||
|
do_test (&r);
|
||||||
|
return 0;
|
||||||
|
}
|
@ -685,7 +685,12 @@ rewrite_bittest (block_stmt_iterator *bsi)
|
|||||||
stmt2 = build_gimple_modify_stmt (var, t);
|
stmt2 = build_gimple_modify_stmt (var, t);
|
||||||
name = make_ssa_name (var, stmt2);
|
name = make_ssa_name (var, stmt2);
|
||||||
GIMPLE_STMT_OPERAND (stmt2, 0) = name;
|
GIMPLE_STMT_OPERAND (stmt2, 0) = name;
|
||||||
|
|
||||||
|
/* Replace the SSA_NAME we compare against zero. Adjust
|
||||||
|
the type of zero accordingly. */
|
||||||
SET_USE (use, name);
|
SET_USE (use, name);
|
||||||
|
TREE_OPERAND (COND_EXPR_COND (use_stmt), 1)
|
||||||
|
= build_int_cst_type (TREE_TYPE (name), 0);
|
||||||
|
|
||||||
bsi_insert_before (bsi, stmt1, BSI_SAME_STMT);
|
bsi_insert_before (bsi, stmt1, BSI_SAME_STMT);
|
||||||
bsi_replace (bsi, stmt2, true);
|
bsi_replace (bsi, stmt2, true);
|
||||||
|
Loading…
Reference in New Issue
Block a user