This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: [PATCH] Fix PR63266: Keep track of impact of sign extension in bswap


Ping?

> -----Original Message-----
> From: gcc-patches-owner@gcc.gnu.org [mailto:gcc-patches-
> owner@gcc.gnu.org] On Behalf Of Thomas Preud'homme
> Sent: Tuesday, September 16, 2014 6:25 PM
> To: gcc-patches@gcc.gnu.org
> Subject: [PATCH] Fix PR63266: Keep track of impact of sign extension in
> bswap
> 
> Hi all,
> 
> The fix for PR61306 disabled bswap when a sign extension is detected.
> However this led to a test case regression (and potential performance
> regression) in case where a sign extension happens but its effect is
> canceled by other bit manipulation. This patch aims to fix that by having a
> special marker to track bytes whose value is unpredictable due to sign
> extension. If the final result of a bit manipulation doesn't contain any
> such marker then the bswap optimization can proceed.
> 
> *** gcc/ChangeLog ***
> 
> 2014-09-15  Thomas Preud'homme  <thomas.preudhomme@arm.com>
> 
> 	PR tree-optimization/63266
> 	* tree-ssa-math-opts.c (struct symbolic_number): Add comment
> about
> 	marker for unknown byte value.
> 	(MARKER_MASK): New macro.
> 	(MARKER_BYTE_UNKNOWN): New macro.
> 	(HEAD_MARKER): New macro.
> 	(do_shift_rotate): Mark bytes with unknown values due to sign
> 	extension when doing an arithmetic right shift. Replace
> hardcoded
> 	mask for marker by new MARKER_MASK macro.
> 	(find_bswap_or_nop_1): Likewise and adjust ORing of two
> symbolic
> 	numbers accordingly.
> 
> *** gcc/testsuite/ChangeLog ***
> 
> 2014-09-15  Thomas Preud'homme  <thomas.preudhomme@arm.com>
> 
> 	PR tree-optimization/63266
> 	* gcc.dg/optimize-bswapsi-1.c (swap32_d): New bswap pass test.
> 
> 
> Testing:
> 
> * Built an arm-none-eabi-gcc cross-compiler and used it to run the
> testsuite on QEMU emulating Cortex-M3 without any regression
> * Bootstrapped on x86_64-linux-gnu target and testsuite was run
> without regression
> 
> 
> Ok for trunk?




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]