]> git.ipfire.org Git - thirdparty/gcc.git/commit
Re: [PATCH] match: Check else value compatibility [PR123268].
authorRobin Dapp <rdapp.gcc@gmail.com>
Thu, 8 Jan 2026 15:35:52 +0000 (08:35 -0700)
committerJeff Law <jeffrey.law@oss.qualcomm.com>
Thu, 8 Jan 2026 15:35:52 +0000 (08:35 -0700)
commit9a50005a5fdf2bb2534c9bcbbdba77cdad3e3f43
tree05b4cffbc331ad0062d0ad751666ee20c367a9c8
parent89eebd8ed01349502fe6ab2c07566f51f55cd37c
Re: [PATCH] match: Check else value compatibility [PR123268].

In PR123268 we transform x * { 0 or 1, 0 or 1, ... } into
x & { 0 or -1, 0 or -1, ...} which is a match.pd pattern.

We start out with
  vect_b_28.48_48 = .COND_LEN_MUL ({ -1, -1, -1, -1 }, a, b, { 0.0, 0.0, 0.0, 0.0 }, 4, 0);
and simplify to

_67 = .COND_LEN_AND ({ -1, -1, -1, -1 }, _60, { 4294967295, 0, 0, 0 }, { 0.0, 0.0, 0.0, 0.0 }, 4, 0);

where the operation type is int but the else value (that we just copied
over from the original op) is still float.

In order to catch that, this patch checks if the operation type and the
else value type are compatible while reassembling the conditional
operation.

PR target/123268
gcc/ChangeLog:

* gimple-match-exports.cc (convert_conditional_op): Check if
orig_op->type and type of else value match.
gcc/gimple-match-exports.cc