commit 53d12ecd624ec901d8449cfa1917f6f90e910927 (HEAD -> master, origin/master, 
origin/HEAD)
Author: Jose E. Marchesi <jose.march...@oracle.com>
Date:   Fri Jul 14 13:54:06 2023 +0200

    bpf: enable instruction scheduling
    
    This patch adds a dummy FSM to bpf.md in order to get INSN_SCHEDULING
    defined.  If the later is not defined, the `combine' pass generates
    paradoxical subregs of mems, which seems to then be mishandled by LRA,
    resulting in invalid code.
    
    Tested in bpf-unknown-none.
    
    gcc/ChangeLog:
    
    2023-07-14  Jose E. Marchesi  <jose.march...@oracle.com>
    
            PR target/110657
            * config/bpf/bpf.md: Enable instruction scheduling.

diff --git a/gcc/config/bpf/bpf.md b/gcc/config/bpf/bpf.md
index f6be0a21234..329f62f55c3 100644
--- a/gcc/config/bpf/bpf.md
+++ b/gcc/config/bpf/bpf.md
@@ -20,6 +20,17 @@
 (include "predicates.md")
 (include "constraints.md")
 
+;;;; Instruction Scheduler FSM
+
+;; This is just to get INSN_SCHEDULING defined, so that combine does
+;; not make paradoxical subregs of memory.  These subregs seems to
+;; confuse LRA that ends generating wrong instructions.
+
+(define_automaton "frob")
+(define_cpu_unit "frob_unit" "frob")
+(define_insn_reservation "frobnicator" 814
+  (const_int 0) "frob_unit")
+
 ;;;; Unspecs
 
 (define_c_enum "unspec" [

Reply via email to