Hi, For readability (and correctness) I'm interested in rewriting a bunch of:
(define_insn_reservation "insn1" 0 (eq_attr "attr1" "val1,val2")) into something like: (define attr "consattr1" "val1,val2" (const (cond [ (eq_attr "attr1" "val1") (const_string "cvaly") (eq_attr "attr1" "val2") (const_string "cvaly")] (const_string "cvaln")))) (define_insn_reservation "insn1" 0 (eq_attr "consattr1" "cval")) But then in http://gcc.gnu.org/onlinedocs/gccint/Constant-Attributes.html#Constant-Attributes we find: "RTL expressions used to define the value of a constant attribute may use the symbol_ref form, but may not use either the match_operand form or eq_attr forms involving insn attributes." Does that restriction also apply to the regexp part of (define_insn_reservation ...) statements? Or do I need to do something like: (define_insn_reservation "insn1" 0 (..some expression using symbol_ref)) I couldn't find any examples of symbol_ref using constants - only C code or functions, so if I do need to use a symbol_ref with a constant, what would it look like? -- Quentin