re PR tree-optimization/64910 (tree reassociation results in poor code)

PR tree-optimization/64910
	* config/i386/i386.md (testqi_ext_3): Allow HImode.

	PR tree-optimization/64910
	* gcc.target/i386/bittest.c: New test.

From-SVN: r231871
This commit is contained in:
Jeff Law 2015-12-20 21:49:02 -07:00 committed by Jeff Law
parent 58688a4ec0
commit 091534a9f4
4 changed files with 33 additions and 1 deletions

View file

@ -1,3 +1,8 @@
2015-12-20 Jeff Law <law@redhat.com>
PR tree-optimization/64910
* config/i386/i386.md (testqi_ext_3): Allow HImode.
2015-12-20 Andrew Pinsi <apinski@cavium.com>
* config/aarch64/atomics.md

View file

@ -7868,7 +7868,7 @@
;; Combine likes to form bit extractions for some tests. Humor it.
(define_insn "*testqi_ext_3"
[(set (reg FLAGS_REG)
(compare (zero_extract:SWI48
(compare (zero_extract:SWI248
(match_operand 0 "nonimmediate_operand" "rm")
(match_operand 1 "const_int_operand" "n")
(match_operand 2 "const_int_operand" "n"))

View file

@ -1,3 +1,8 @@
2015-12-20 Jeff Law <law@redhat.com>
PR tree-optimization/64910
* gcc.target/i386/bittest.c: New test.
2015-12-20 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/complex1.adb: New test.

View file

@ -0,0 +1,22 @@
/* { dg-do compile } */
/* { dg-options "-O2" } */
extern int dbg_cnt (void);
struct function
{
unsigned int calls_setjmp:1;
};
extern struct function *cfun;
unsigned char
gate_rtl_cprop (void)
{
return !(cfun + 0)->calls_setjmp && dbg_cnt ();
}
/* This should be implementable without performing a bitmask as we can
just use a test imm,mem. So instructions which load the object from
memory and mask off bits are unnecessary. In theory we can just count
the move-with-extension, and and testb instructions. There should be
only one. */
/* { dg-final { scan-assembler-times "movzbl|and|testb" 1 { target { i?86-*-* x86_64-*-*} } } } */