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>
|
||||
|
||||
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>
|
||||
|
||||
* 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);
|
||||
name = make_ssa_name (var, stmt2);
|
||||
GIMPLE_STMT_OPERAND (stmt2, 0) = name;
|
||||
|
||||
/* Replace the SSA_NAME we compare against zero. Adjust
|
||||
the type of zero accordingly. */
|
||||
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_replace (bsi, stmt2, true);
|
||||
|
Loading…
Reference in New Issue
Block a user