Commit 7e6d8fd9 by Jakub Jelinek Committed by Jakub Jelinek

re PR rtl-optimization/61673 (Miscompilation of _gnutls_hostname_compare on s390)

	PR rtl-optimization/61673
	* combine.c (simplify_comparison): Test just mode's sign bit
	in tmode rather than the sign bit and any bits above it.

	* gcc.c-torture/execute/pr61673.c: New test.

From-SVN: r212364
parent e4a452b2
2014-07-08 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/61673
* combine.c (simplify_comparison): Test just mode's sign bit
in tmode rather than the sign bit and any bits above it.
2014-07-08 Roman Gareev <gareevroman@gmail.com>
* graphite-isl-ast-to-gimple.c (generate_isl_context):
......
......@@ -11981,7 +11981,7 @@ simplify_comparison (enum rtx_code code, rtx *pop0, rtx *pop1)
= (unsigned HOST_WIDE_INT) 1 << (GET_MODE_BITSIZE (mode) - 1);
op0 = simplify_gen_binary (AND, tmode,
gen_lowpart (tmode, op0),
gen_int_mode (sign, mode));
gen_int_mode (sign, tmode));
code = (code == LT) ? NE : EQ;
break;
}
......
2014-07-08 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/61673
* gcc.c-torture/execute/pr61673.c: New test.
PR tree-optimization/61725
* gcc.dg/tree-ssa/vrp93.c: New test.
* gcc.c-torture/execute/pr61725.c: New test.
......
/* PR rtl-optimization/61673 */
char e;
__attribute__((noinline, noclone)) void
bar (char x)
{
if (x != 0x54 && x != (char) 0x87)
__builtin_abort ();
}
__attribute__((noinline, noclone)) void
foo (const char *x)
{
char d = x[0];
int c = d;
if ((c >= 0 && c <= 0x7f) == 0)
e = d;
bar (d);
}
__attribute__((noinline, noclone)) void
baz (const char *x)
{
char d = x[0];
int c = d;
if ((c >= 0 && c <= 0x7f) == 0)
e = d;
}
int
main ()
{
const char c[] = { 0x54, 0x87 };
e = 0x21;
foo (c);
if (e != 0x21)
__builtin_abort ();
foo (c + 1);
if (e != (char) 0x87)
__builtin_abort ();
e = 0x21;
baz (c);
if (e != 0x21)
__builtin_abort ();
baz (c + 1);
if (e != (char) 0x87)
__builtin_abort ();
return 0;
}
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