Hi, Alex,
On Tue, Nov 12, 2024 at 11:46:54AM +0000, Alex Coplan wrote:
> I think it might be better to put the test in gcc.c-torture/execute,
> then it will automatically get run with the various torture options
> and you should be able to drop both the dejagnu directives.
>
> Thanks,
> Alex
Yep. Now it is going through more options at runtime. Thank you for the
suggestion.
Updated patch is below:
-- >8 --
gcc/ChangeLog:
* simplify-rtx.cc (simplify_context::simplify_unary_operation_1):
Fix subreg mode check during zero_extend(not) -> xor optimization.
gcc/testsuite/ChangeLog:
* gcc.c-torture/execute/pr117476.c: New test. From Zhendong Su.
Signed-off-by: Alexey Merzlyakov <[email protected]>
---
gcc/simplify-rtx.cc | 2 +-
gcc/testsuite/gcc.c-torture/execute/pr117476.c | 10 ++++++++++
2 files changed, 11 insertions(+), 1 deletion(-)
create mode 100644 gcc/testsuite/gcc.c-torture/execute/pr117476.c
diff --git a/gcc/simplify-rtx.cc b/gcc/simplify-rtx.cc
index d05efac20dc..2a9cabaad09 100644
--- a/gcc/simplify-rtx.cc
+++ b/gcc/simplify-rtx.cc
@@ -1856,7 +1856,7 @@ simplify_context::simplify_unary_operation_1 (rtx_code
code, machine_mode mode,
&& subreg_lowpart_p (op)
&& GET_MODE_SIZE (GET_MODE (op)).is_constant ()
&& (nonzero_bits (XEXP (XEXP (op, 0), 0), mode)
- & ~GET_MODE_MASK (mode)) == 0)
+ & ~GET_MODE_MASK (GET_MODE (op))) == 0)
{
const uint64_t mask = GET_MODE_MASK (GET_MODE (op));
return simplify_gen_binary (XOR, mode,
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr117476.c
b/gcc/testsuite/gcc.c-torture/execute/pr117476.c
new file mode 100644
index 00000000000..97deb1e2b63
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr117476.c
@@ -0,0 +1,10 @@
+/* PR rtl-optimization/117476 */
+
+int c = 0x1FF;
+
+int main()
+{
+ if (((c ^ 0xFF) & 0xFF) != 0)
+ __builtin_abort();
+ return 0;
+}
--
2.34.1