GNU Compiler Collection (GCC) Internals: Constant Attributes

Next: Mnemonic Attribute, Previous: Insn Lengths, Up: Insn Attributes [Contents][Index]

#### 16.19.6 Constant Attributes

A special form of `define_attr`, where the expression for the default value is a `const` expression, indicates an attribute that is constant for a given run of the compiler. Constant attributes may be used to specify which variety of processor is used. For example,

    (define_attr "cpu" "m88100,m88110,m88000"
     (const
      (cond [(symbol_ref "TARGET_88100") (const_string "m88100")
             (symbol_ref "TARGET_88110") (const_string "m88110")]
            (const_string "m88000"))))

    (define_attr "memory" "fast,slow"
     (const
      (if_then_else (symbol_ref "TARGET_FAST_MEM")
                    (const_string "fast")
                    (const_string "slow"))))

The routine generated for constant attributes has no parameters as it does not depend on any particular insn. 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.