Skip to content
Snippets Groups Projects
  • Yangyu Chen's avatar
    9bf0dbe6
    Introduce TARGET_CLONES_ATTR_SEPARATOR for RISC-V · 9bf0dbe6
    Yangyu Chen authored
    Some architectures may use ',' in the attribute string, but it is not
    used as the separator for different targets. To avoid conflict, we
    introduce a new macro TARGET_CLONES_ATTR_SEPARATOR to separate different
    clones.
    
    As an example, according to RISC-V C-API Specification [1], RISC-V allows
    ',' in the attribute string in the "arch=" option to specify one more
    ISA extensions in the same target function, which conflict with the
    default separator to separate different clones. This patch introduces
    TARGET_CLONES_ATTR_SEPARATOR for RISC-V and choose '#' as the separator,
    since '#' is not allowed in the target_clones option string.
    
    [1] https://github.com/riscv-non-isa/riscv-c-api-doc/blob/c6c5d6d9cf96b342293315a5dff3d25e96ef8191/src/c-api.adoc#__attribute__targetattr-string
    
    
    
    Signed-off-by: default avatarYangyu Chen <cyy@cyyself.name>
    
    gcc/ChangeLog:
    
    	* defaults.h (TARGET_CLONES_ATTR_SEPARATOR): Define new macro.
    	* multiple_target.cc (get_attr_str): Use
    	TARGET_CLONES_ATTR_SEPARATOR to separate attributes.
    	(separate_attrs): Likewise.
    	(expand_target_clones): Likewise.
    	* attribs.cc (attr_strcmp): Likewise.
    	(sorted_attr_string): Likewise.
    	* tree.cc (get_target_clone_attr_len): Likewise.
    	* config/riscv/riscv.h (TARGET_CLONES_ATTR_SEPARATOR): Define
    	TARGET_CLONES_ATTR_SEPARATOR for RISC-V.
    	* doc/tm.texi: Document TARGET_CLONES_ATTR_SEPARATOR.
    	* doc/tm.texi.in: Likewise.
    9bf0dbe6
    History
    Introduce TARGET_CLONES_ATTR_SEPARATOR for RISC-V
    Yangyu Chen authored
    Some architectures may use ',' in the attribute string, but it is not
    used as the separator for different targets. To avoid conflict, we
    introduce a new macro TARGET_CLONES_ATTR_SEPARATOR to separate different
    clones.
    
    As an example, according to RISC-V C-API Specification [1], RISC-V allows
    ',' in the attribute string in the "arch=" option to specify one more
    ISA extensions in the same target function, which conflict with the
    default separator to separate different clones. This patch introduces
    TARGET_CLONES_ATTR_SEPARATOR for RISC-V and choose '#' as the separator,
    since '#' is not allowed in the target_clones option string.
    
    [1] https://github.com/riscv-non-isa/riscv-c-api-doc/blob/c6c5d6d9cf96b342293315a5dff3d25e96ef8191/src/c-api.adoc#__attribute__targetattr-string
    
    
    
    Signed-off-by: default avatarYangyu Chen <cyy@cyyself.name>
    
    gcc/ChangeLog:
    
    	* defaults.h (TARGET_CLONES_ATTR_SEPARATOR): Define new macro.
    	* multiple_target.cc (get_attr_str): Use
    	TARGET_CLONES_ATTR_SEPARATOR to separate attributes.
    	(separate_attrs): Likewise.
    	(expand_target_clones): Likewise.
    	* attribs.cc (attr_strcmp): Likewise.
    	(sorted_attr_string): Likewise.
    	* tree.cc (get_target_clone_attr_len): Likewise.
    	* config/riscv/riscv.h (TARGET_CLONES_ATTR_SEPARATOR): Define
    	TARGET_CLONES_ATTR_SEPARATOR for RISC-V.
    	* doc/tm.texi: Document TARGET_CLONES_ATTR_SEPARATOR.
    	* doc/tm.texi.in: Likewise.