https://gcc.gnu.org/g:46d2ce70e458650eb253bbac0032184565660b87
commit r17-5313-g46d2ce70e458650eb253bbac0032184565660b87 Author: Roger Sayle <[email protected]> Date: Sun Oct 18 23:41:09 2026 +0100 Remove experimental AOP rtx code The AOP rtx code was a placeholder to allow experiments in the RTL optimizers and backends to investigate whether capturing the semantics of any-or-plus operations could benefit code generation. The intention was that there would be no functional change, and this code was purely to aid documentation and propose the spelling of a future operator. Unfortunately, RTL expansion of OPTAB_DC optabs on some targets can add REQ_EQUAL notes for multi-word operations or complex insn patterns, and these REG_EQUAL notes can end up causing AOP to be passed into simplify-rtx and elsewhere, where the necessary infrastructure isn't in place. Indeed the AOP experiment was to investigate how invasive those changes would need to be (to evaluate ROI). This patch removes the AOP rtx code from rtl.def. It may or may not return at some point in the future. 2026-10-18 Roger Sayle <[email protected]> gcc/ChangeLog * optabs.def (aop_optab): Change from OPTAB_DC to OPTAB_C. * rtl.def (AOP): Remove/revert AOP rtx code. Diff: --- gcc/optabs.def | 2 +- gcc/rtl.def | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/gcc/optabs.def b/gcc/optabs.def index 9d95f047cb50..faecb796d015 100644 --- a/gcc/optabs.def +++ b/gcc/optabs.def @@ -576,4 +576,4 @@ OPTAB_D (mask_len_strided_load_optab, "mask_len_strided_load_$a") OPTAB_D (mask_len_strided_store_optab, "mask_len_strided_store_$a") OPTAB_D (andn_optab, "andn$a3") OPTAB_D (iorn_optab, "iorn$a3") -OPTAB_DC (aop_optab, "aop$a3", AOP) +OPTAB_D (aop_optab, "aop$a3") diff --git a/gcc/rtl.def b/gcc/rtl.def index cec11d832078..ae757929de2f 100644 --- a/gcc/rtl.def +++ b/gcc/rtl.def @@ -490,7 +490,6 @@ DEF_RTL_EXPR(UMOD, "umod", "ee", RTX_BIN_ARITH) DEF_RTL_EXPR(AND, "and", "ee", RTX_COMM_ARITH) DEF_RTL_EXPR(IOR, "ior", "ee", RTX_COMM_ARITH) DEF_RTL_EXPR(XOR, "xor", "ee", RTX_COMM_ARITH) -DEF_RTL_EXPR(AOP, "aop", "ee", RTX_COMM_ARITH) DEF_RTL_EXPR(NOT, "not", "e", RTX_UNARY) /* Operand:
