1. Apr 28, 2023
    • Pan Li's avatar
      RISC-V: Support segment intrinsics · de7687b2
      Pan Li authored
      
      
      Pan Li <pan2.li@intel.com> on behalf of Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
      
      gcc/ChangeLog:
      
              * config/riscv/riscv-vector-builtins-bases.cc (fold_fault_load):
      	  New function.
              (class vlseg): New class.
              (class vsseg): Ditto.
              (class vlsseg): Ditto.
              (class vssseg): Ditto.
              (class seg_indexed_load): Ditto.
              (class seg_indexed_store): Ditto.
              (class vlsegff): Ditto.
              (BASE): Ditto.
              * config/riscv/riscv-vector-builtins-bases.h: Ditto.
              * config/riscv/riscv-vector-builtins-functions.def (vlseg):
      	  Ditto.
              (vsseg): Ditto.
              (vlsseg): Ditto.
              (vssseg): Ditto.
              (vluxseg): Ditto.
              (vloxseg): Ditto.
              (vsuxseg): Ditto.
              (vsoxseg): Ditto.
              (vlsegff): Ditto.
              * config/riscv/riscv-vector-builtins-shapes.cc (struct
      	  seg_loadstore_def): Ditto.
              (struct seg_indexed_loadstore_def): Ditto.
              (struct seg_fault_load_def): Ditto.
              (SHAPE): Ditto.
              * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
              * config/riscv/riscv-vector-builtins.cc
      	  (function_builder::append_nf): New function.
              * config/riscv/riscv-vector-builtins.def (vfloat32m1x2_t):
      	  Change ptr from double into float.
              (vfloat32m1x3_t): Ditto.
              (vfloat32m1x4_t): Ditto.
              (vfloat32m1x5_t): Ditto.
              (vfloat32m1x6_t): Ditto.
              (vfloat32m1x7_t): Ditto.
              (vfloat32m1x8_t): Ditto.
              (vfloat32m2x2_t): Ditto.
              (vfloat32m2x3_t): Ditto.
              (vfloat32m2x4_t): Ditto.
              (vfloat32m4x2_t): Ditto.
              * config/riscv/riscv-vector-builtins.h: Add segment intrinsics.
              * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Adapt for
      	  segment ff load.
              * config/riscv/riscv.md: Add segment instructions.
              * config/riscv/vector-iterators.md: Support segment intrinsics.
              * config/riscv/vector.md (@pred_unit_strided_load<mode>): New
      	  pattern.
              (@pred_unit_strided_store<mode>): Ditto.
              (@pred_strided_load<mode>): Ditto.
              (@pred_strided_store<mode>): Ditto.
              (@pred_fault_load<mode>): Ditto.
              (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
              (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
              (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
              (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
              (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
              (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
              (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
              (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
              (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
              (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
              (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
              (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
              (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
              (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
      
      Signed-off-by: default avatarJu-Zhe Zhong <juzhe.zhong@rivai.ai>
      de7687b2
    • Pan Li's avatar
      RISC-V: Add tuple type vget/vset intrinsics · 4b5d59b7
      Pan Li authored
      
      
      Pan Li <pan2.li@intel.com> on behalf of Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
      
      gcc/ChangeLog:
      
              * config/riscv/genrvv-type-indexer.cc (valid_type): Adapt for
      	  tuple type support.
              (inttype): Ditto.
              (floattype): Ditto.
              (main): Ditto.
              * config/riscv/riscv-vector-builtins-bases.cc: Ditto.
              * config/riscv/riscv-vector-builtins-functions.def (vset): Add
      	  tuple type vset.
              (vget): Add tuple type vget.
              * config/riscv/riscv-vector-builtins-types.def
      	  (DEF_RVV_TUPLE_OPS): New macro.
              (vint8mf8x2_t): Ditto.
              (vuint8mf8x2_t): Ditto.
              (vint8mf8x3_t): Ditto.
              (vuint8mf8x3_t): Ditto.
              (vint8mf8x4_t): Ditto.
              (vuint8mf8x4_t): Ditto.
              (vint8mf8x5_t): Ditto.
              (vuint8mf8x5_t): Ditto.
              (vint8mf8x6_t): Ditto.
              (vuint8mf8x6_t): Ditto.
              (vint8mf8x7_t): Ditto.
              (vuint8mf8x7_t): Ditto.
              (vint8mf8x8_t): Ditto.
              (vuint8mf8x8_t): Ditto.
              (vint8mf4x2_t): Ditto.
              (vuint8mf4x2_t): Ditto.
              (vint8mf4x3_t): Ditto.
              (vuint8mf4x3_t): Ditto.
              (vint8mf4x4_t): Ditto.
              (vuint8mf4x4_t): Ditto.
              (vint8mf4x5_t): Ditto.
              (vuint8mf4x5_t): Ditto.
              (vint8mf4x6_t): Ditto.
              (vuint8mf4x6_t): Ditto.
              (vint8mf4x7_t): Ditto.
              (vuint8mf4x7_t): Ditto.
              (vint8mf4x8_t): Ditto.
              (vuint8mf4x8_t): Ditto.
              (vint8mf2x2_t): Ditto.
              (vuint8mf2x2_t): Ditto.
              (vint8mf2x3_t): Ditto.
              (vuint8mf2x3_t): Ditto.
              (vint8mf2x4_t): Ditto.
              (vuint8mf2x4_t): Ditto.
              (vint8mf2x5_t): Ditto.
              (vuint8mf2x5_t): Ditto.
              (vint8mf2x6_t): Ditto.
              (vuint8mf2x6_t): Ditto.
              (vint8mf2x7_t): Ditto.
              (vuint8mf2x7_t): Ditto.
              (vint8mf2x8_t): Ditto.
              (vuint8mf2x8_t): Ditto.
              (vint8m1x2_t): Ditto.
              (vuint8m1x2_t): Ditto.
              (vint8m1x3_t): Ditto.
              (vuint8m1x3_t): Ditto.
              (vint8m1x4_t): Ditto.
              (vuint8m1x4_t): Ditto.
              (vint8m1x5_t): Ditto.
              (vuint8m1x5_t): Ditto.
              (vint8m1x6_t): Ditto.
              (vuint8m1x6_t): Ditto.
              (vint8m1x7_t): Ditto.
              (vuint8m1x7_t): Ditto.
              (vint8m1x8_t): Ditto.
              (vuint8m1x8_t): Ditto.
              (vint8m2x2_t): Ditto.
              (vuint8m2x2_t): Ditto.
              (vint8m2x3_t): Ditto.
              (vuint8m2x3_t): Ditto.
              (vint8m2x4_t): Ditto.
              (vuint8m2x4_t): Ditto.
              (vint8m4x2_t): Ditto.
              (vuint8m4x2_t): Ditto.
              (vint16mf4x2_t): Ditto.
              (vuint16mf4x2_t): Ditto.
              (vint16mf4x3_t): Ditto.
              (vuint16mf4x3_t): Ditto.
              (vint16mf4x4_t): Ditto.
              (vuint16mf4x4_t): Ditto.
              (vint16mf4x5_t): Ditto.
              (vuint16mf4x5_t): Ditto.
              (vint16mf4x6_t): Ditto.
              (vuint16mf4x6_t): Ditto.
              (vint16mf4x7_t): Ditto.
              (vuint16mf4x7_t): Ditto.
              (vint16mf4x8_t): Ditto.
              (vuint16mf4x8_t): Ditto.
              (vint16mf2x2_t): Ditto.
              (vuint16mf2x2_t): Ditto.
              (vint16mf2x3_t): Ditto.
              (vuint16mf2x3_t): Ditto.
              (vint16mf2x4_t): Ditto.
              (vuint16mf2x4_t): Ditto.
              (vint16mf2x5_t): Ditto.
              (vuint16mf2x5_t): Ditto.
              (vint16mf2x6_t): Ditto.
              (vuint16mf2x6_t): Ditto.
              (vint16mf2x7_t): Ditto.
              (vuint16mf2x7_t): Ditto.
              (vint16mf2x8_t): Ditto.
              (vuint16mf2x8_t): Ditto.
              (vint16m1x2_t): Ditto.
              (vuint16m1x2_t): Ditto.
              (vint16m1x3_t): Ditto.
              (vuint16m1x3_t): Ditto.
              (vint16m1x4_t): Ditto.
              (vuint16m1x4_t): Ditto.
              (vint16m1x5_t): Ditto.
              (vuint16m1x5_t): Ditto.
              (vint16m1x6_t): Ditto.
              (vuint16m1x6_t): Ditto.
              (vint16m1x7_t): Ditto.
              (vuint16m1x7_t): Ditto.
              (vint16m1x8_t): Ditto.
              (vuint16m1x8_t): Ditto.
              (vint16m2x2_t): Ditto.
              (vuint16m2x2_t): Ditto.
              (vint16m2x3_t): Ditto.
              (vuint16m2x3_t): Ditto.
              (vint16m2x4_t): Ditto.
              (vuint16m2x4_t): Ditto.
              (vint16m4x2_t): Ditto.
              (vuint16m4x2_t): Ditto.
              (vint32mf2x2_t): Ditto.
              (vuint32mf2x2_t): Ditto.
              (vint32mf2x3_t): Ditto.
              (vuint32mf2x3_t): Ditto.
              (vint32mf2x4_t): Ditto.
              (vuint32mf2x4_t): Ditto.
              (vint32mf2x5_t): Ditto.
              (vuint32mf2x5_t): Ditto.
              (vint32mf2x6_t): Ditto.
              (vuint32mf2x6_t): Ditto.
              (vint32mf2x7_t): Ditto.
              (vuint32mf2x7_t): Ditto.
              (vint32mf2x8_t): Ditto.
              (vuint32mf2x8_t): Ditto.
              (vint32m1x2_t): Ditto.
              (vuint32m1x2_t): Ditto.
              (vint32m1x3_t): Ditto.
              (vuint32m1x3_t): Ditto.
              (vint32m1x4_t): Ditto.
              (vuint32m1x4_t): Ditto.
              (vint32m1x5_t): Ditto.
              (vuint32m1x5_t): Ditto.
              (vint32m1x6_t): Ditto.
              (vuint32m1x6_t): Ditto.
              (vint32m1x7_t): Ditto.
              (vuint32m1x7_t): Ditto.
              (vint32m1x8_t): Ditto.
              (vuint32m1x8_t): Ditto.
              (vint32m2x2_t): Ditto.
              (vuint32m2x2_t): Ditto.
              (vint32m2x3_t): Ditto.
              (vuint32m2x3_t): Ditto.
              (vint32m2x4_t): Ditto.
              (vuint32m2x4_t): Ditto.
              (vint32m4x2_t): Ditto.
              (vuint32m4x2_t): Ditto.
              (vint64m1x2_t): Ditto.
              (vuint64m1x2_t): Ditto.
              (vint64m1x3_t): Ditto.
              (vuint64m1x3_t): Ditto.
              (vint64m1x4_t): Ditto.
              (vuint64m1x4_t): Ditto.
              (vint64m1x5_t): Ditto.
              (vuint64m1x5_t): Ditto.
              (vint64m1x6_t): Ditto.
              (vuint64m1x6_t): Ditto.
              (vint64m1x7_t): Ditto.
              (vuint64m1x7_t): Ditto.
              (vint64m1x8_t): Ditto.
              (vuint64m1x8_t): Ditto.
              (vint64m2x2_t): Ditto.
              (vuint64m2x2_t): Ditto.
              (vint64m2x3_t): Ditto.
              (vuint64m2x3_t): Ditto.
              (vint64m2x4_t): Ditto.
              (vuint64m2x4_t): Ditto.
              (vint64m4x2_t): Ditto.
              (vuint64m4x2_t): Ditto.
              (vfloat32mf2x2_t): Ditto.
              (vfloat32mf2x3_t): Ditto.
              (vfloat32mf2x4_t): Ditto.
              (vfloat32mf2x5_t): Ditto.
              (vfloat32mf2x6_t): Ditto.
              (vfloat32mf2x7_t): Ditto.
              (vfloat32mf2x8_t): Ditto.
              (vfloat32m1x2_t): Ditto.
              (vfloat32m1x3_t): Ditto.
              (vfloat32m1x4_t): Ditto.
              (vfloat32m1x5_t): Ditto.
              (vfloat32m1x6_t): Ditto.
              (vfloat32m1x7_t): Ditto.
              (vfloat32m1x8_t): Ditto.
              (vfloat32m2x2_t): Ditto.
              (vfloat32m2x3_t): Ditto.
              (vfloat32m2x4_t): Ditto.
              (vfloat32m4x2_t): Ditto.
              (vfloat64m1x2_t): Ditto.
              (vfloat64m1x3_t): Ditto.
              (vfloat64m1x4_t): Ditto.
              (vfloat64m1x5_t): Ditto.
              (vfloat64m1x6_t): Ditto.
              (vfloat64m1x7_t): Ditto.
              (vfloat64m1x8_t): Ditto.
              (vfloat64m2x2_t): Ditto.
              (vfloat64m2x3_t): Ditto.
              (vfloat64m2x4_t): Ditto.
              (vfloat64m4x2_t): Ditto.
              * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_OPS):
      	  Ditto.
              (DEF_RVV_TYPE_INDEX): Ditto.
              (rvv_arg_type_info::get_tuple_subpart_type): New function.
              (DEF_RVV_TUPLE_TYPE): New macro.
              * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE_INDEX):
      	  Adapt for tuple vget/vset support.
              (vint8mf4_t): Ditto.
              (vuint8mf4_t): Ditto.
              (vint8mf2_t): Ditto.
              (vuint8mf2_t): Ditto.
              (vint8m1_t): Ditto.
              (vuint8m1_t): Ditto.
              (vint8m2_t): Ditto.
              (vuint8m2_t): Ditto.
              (vint8m4_t): Ditto.
              (vuint8m4_t): Ditto.
              (vint8m8_t): Ditto.
              (vuint8m8_t): Ditto.
              (vint16mf4_t): Ditto.
              (vuint16mf4_t): Ditto.
              (vint16mf2_t): Ditto.
              (vuint16mf2_t): Ditto.
              (vint16m1_t): Ditto.
              (vuint16m1_t): Ditto.
              (vint16m2_t): Ditto.
              (vuint16m2_t): Ditto.
              (vint16m4_t): Ditto.
              (vuint16m4_t): Ditto.
              (vint16m8_t): Ditto.
              (vuint16m8_t): Ditto.
              (vint32mf2_t): Ditto.
              (vuint32mf2_t): Ditto.
              (vint32m1_t): Ditto.
              (vuint32m1_t): Ditto.
              (vint32m2_t): Ditto.
              (vuint32m2_t): Ditto.
              (vint32m4_t): Ditto.
              (vuint32m4_t): Ditto.
              (vint32m8_t): Ditto.
              (vuint32m8_t): Ditto.
              (vint64m1_t): Ditto.
              (vuint64m1_t): Ditto.
              (vint64m2_t): Ditto.
              (vuint64m2_t): Ditto.
              (vint64m4_t): Ditto.
              (vuint64m4_t): Ditto.
              (vint64m8_t): Ditto.
              (vuint64m8_t): Ditto.
              (vfloat32mf2_t): Ditto.
              (vfloat32m1_t): Ditto.
              (vfloat32m2_t): Ditto.
              (vfloat32m4_t): Ditto.
              (vfloat32m8_t): Ditto.
              (vfloat64m1_t): Ditto.
              (vfloat64m2_t): Ditto.
              (vfloat64m4_t): Ditto.
              (vfloat64m8_t): Ditto.
              (tuple_subpart): Add tuple subpart base type.
              * config/riscv/riscv-vector-builtins.h (struct
      	  rvv_arg_type_info): Ditto.
              (tuple_type_field): New function.
      
      Signed-off-by: default avatarJu-Zhe Zhong <juzhe.zhong@rivai.ai>
      4b5d59b7
    • Pan Li's avatar
      [PATCH] RISC-V: Add tuple types support · b68018c0
      Pan Li authored
      
      
      Pan Li <pan2.li@intel.com> on behalf of Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
      
      gcc/ChangeLog:
      
              * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
              (RVV_TUPLE_PARTIAL_MODES): Ditto.
              * config/riscv/riscv-protos.h (riscv_v_ext_tuple_mode_p): New
      	  function.
              (get_nf): Ditto.
              (get_subpart_mode): Ditto.
              (get_tuple_mode): Ditto.
              (expand_tuple_move): Ditto.
              * config/riscv/riscv-v.cc (ENTRY): New macro.
              (TUPLE_ENTRY): Ditto.
              (get_nf): New function.
              (get_subpart_mode): Ditto.
              (get_tuple_mode): Ditto.
              (expand_tuple_move): Ditto.
              * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_TYPE):
      	  New macro.
              (register_tuple_type): New function
              * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE):
      	  New macro.
              (vint8mf8x2_t): New macro.
              (vuint8mf8x2_t): Ditto.
              (vint8mf8x3_t): Ditto.
              (vuint8mf8x3_t): Ditto.
              (vint8mf8x4_t): Ditto.
              (vuint8mf8x4_t): Ditto.
              (vint8mf8x5_t): Ditto.
              (vuint8mf8x5_t): Ditto.
              (vint8mf8x6_t): Ditto.
              (vuint8mf8x6_t): Ditto.
              (vint8mf8x7_t): Ditto.
              (vuint8mf8x7_t): Ditto.
              (vint8mf8x8_t): Ditto.
              (vuint8mf8x8_t): Ditto.
              (vint8mf4x2_t): Ditto.
              (vuint8mf4x2_t): Ditto.
              (vint8mf4x3_t): Ditto.
              (vuint8mf4x3_t): Ditto.
              (vint8mf4x4_t): Ditto.
              (vuint8mf4x4_t): Ditto.
              (vint8mf4x5_t): Ditto.
              (vuint8mf4x5_t): Ditto.
              (vint8mf4x6_t): Ditto.
              (vuint8mf4x6_t): Ditto.
              (vint8mf4x7_t): Ditto.
              (vuint8mf4x7_t): Ditto.
              (vint8mf4x8_t): Ditto.
              (vuint8mf4x8_t): Ditto.
              (vint8mf2x2_t): Ditto.
              (vuint8mf2x2_t): Ditto.
              (vint8mf2x3_t): Ditto.
              (vuint8mf2x3_t): Ditto.
              (vint8mf2x4_t): Ditto.
              (vuint8mf2x4_t): Ditto.
              (vint8mf2x5_t): Ditto.
              (vuint8mf2x5_t): Ditto.
              (vint8mf2x6_t): Ditto.
              (vuint8mf2x6_t): Ditto.
              (vint8mf2x7_t): Ditto.
              (vuint8mf2x7_t): Ditto.
              (vint8mf2x8_t): Ditto.
              (vuint8mf2x8_t): Ditto.
              (vint8m1x2_t): Ditto.
              (vuint8m1x2_t): Ditto.
              (vint8m1x3_t): Ditto.
              (vuint8m1x3_t): Ditto.
              (vint8m1x4_t): Ditto.
              (vuint8m1x4_t): Ditto.
              (vint8m1x5_t): Ditto.
              (vuint8m1x5_t): Ditto.
              (vint8m1x6_t): Ditto.
              (vuint8m1x6_t): Ditto.
              (vint8m1x7_t): Ditto.
              (vuint8m1x7_t): Ditto.
              (vint8m1x8_t): Ditto.
              (vuint8m1x8_t): Ditto.
              (vint8m2x2_t): Ditto.
              (vuint8m2x2_t): Ditto.
              (vint8m2x3_t): Ditto.
              (vuint8m2x3_t): Ditto.
              (vint8m2x4_t): Ditto.
              (vuint8m2x4_t): Ditto.
              (vint8m4x2_t): Ditto.
              (vuint8m4x2_t): Ditto.
              (vint16mf4x2_t): Ditto.
              (vuint16mf4x2_t): Ditto.
              (vint16mf4x3_t): Ditto.
              (vuint16mf4x3_t): Ditto.
              (vint16mf4x4_t): Ditto.
              (vuint16mf4x4_t): Ditto.
              (vint16mf4x5_t): Ditto.
              (vuint16mf4x5_t): Ditto.
              (vint16mf4x6_t): Ditto.
              (vuint16mf4x6_t): Ditto.
              (vint16mf4x7_t): Ditto.
              (vuint16mf4x7_t): Ditto.
              (vint16mf4x8_t): Ditto.
              (vuint16mf4x8_t): Ditto.
              (vint16mf2x2_t): Ditto.
              (vuint16mf2x2_t): Ditto.
              (vint16mf2x3_t): Ditto.
              (vuint16mf2x3_t): Ditto.
              (vint16mf2x4_t): Ditto.
              (vuint16mf2x4_t): Ditto.
              (vint16mf2x5_t): Ditto.
              (vuint16mf2x5_t): Ditto.
              (vint16mf2x6_t): Ditto.
              (vuint16mf2x6_t): Ditto.
              (vint16mf2x7_t): Ditto.
              (vuint16mf2x7_t): Ditto.
              (vint16mf2x8_t): Ditto.
              (vuint16mf2x8_t): Ditto.
              (vint16m1x2_t): Ditto.
              (vuint16m1x2_t): Ditto.
              (vint16m1x3_t): Ditto.
              (vuint16m1x3_t): Ditto.
              (vint16m1x4_t): Ditto.
              (vuint16m1x4_t): Ditto.
              (vint16m1x5_t): Ditto.
              (vuint16m1x5_t): Ditto.
              (vint16m1x6_t): Ditto.
              (vuint16m1x6_t): Ditto.
              (vint16m1x7_t): Ditto.
              (vuint16m1x7_t): Ditto.
              (vint16m1x8_t): Ditto.
              (vuint16m1x8_t): Ditto.
              (vint16m2x2_t): Ditto.
              (vuint16m2x2_t): Ditto.
              (vint16m2x3_t): Ditto.
              (vuint16m2x3_t): Ditto.
              (vint16m2x4_t): Ditto.
              (vuint16m2x4_t): Ditto.
              (vint16m4x2_t): Ditto.
              (vuint16m4x2_t): Ditto.
              (vint32mf2x2_t): Ditto.
              (vuint32mf2x2_t): Ditto.
              (vint32mf2x3_t): Ditto.
              (vuint32mf2x3_t): Ditto.
              (vint32mf2x4_t): Ditto.
              (vuint32mf2x4_t): Ditto.
              (vint32mf2x5_t): Ditto.
              (vuint32mf2x5_t): Ditto.
              (vint32mf2x6_t): Ditto.
              (vuint32mf2x6_t): Ditto.
              (vint32mf2x7_t): Ditto.
              (vuint32mf2x7_t): Ditto.
              (vint32mf2x8_t): Ditto.
              (vuint32mf2x8_t): Ditto.
              (vint32m1x2_t): Ditto.
              (vuint32m1x2_t): Ditto.
              (vint32m1x3_t): Ditto.
              (vuint32m1x3_t): Ditto.
              (vint32m1x4_t): Ditto.
              (vuint32m1x4_t): Ditto.
              (vint32m1x5_t): Ditto.
              (vuint32m1x5_t): Ditto.
              (vint32m1x6_t): Ditto.
              (vuint32m1x6_t): Ditto.
              (vint32m1x7_t): Ditto.
              (vuint32m1x7_t): Ditto.
              (vint32m1x8_t): Ditto.
              (vuint32m1x8_t): Ditto.
              (vint32m2x2_t): Ditto.
              (vuint32m2x2_t): Ditto.
              (vint32m2x3_t): Ditto.
              (vuint32m2x3_t): Ditto.
              (vint32m2x4_t): Ditto.
              (vuint32m2x4_t): Ditto.
              (vint32m4x2_t): Ditto.
              (vuint32m4x2_t): Ditto.
              (vint64m1x2_t): Ditto.
              (vuint64m1x2_t): Ditto.
              (vint64m1x3_t): Ditto.
              (vuint64m1x3_t): Ditto.
              (vint64m1x4_t): Ditto.
              (vuint64m1x4_t): Ditto.
              (vint64m1x5_t): Ditto.
              (vuint64m1x5_t): Ditto.
              (vint64m1x6_t): Ditto.
              (vuint64m1x6_t): Ditto.
              (vint64m1x7_t): Ditto.
              (vuint64m1x7_t): Ditto.
              (vint64m1x8_t): Ditto.
              (vuint64m1x8_t): Ditto.
              (vint64m2x2_t): Ditto.
              (vuint64m2x2_t): Ditto.
              (vint64m2x3_t): Ditto.
              (vuint64m2x3_t): Ditto.
              (vint64m2x4_t): Ditto.
              (vuint64m2x4_t): Ditto.
              (vint64m4x2_t): Ditto.
              (vuint64m4x2_t): Ditto.
              (vfloat32mf2x2_t): Ditto.
              (vfloat32mf2x3_t): Ditto.
              (vfloat32mf2x4_t): Ditto.
              (vfloat32mf2x5_t): Ditto.
              (vfloat32mf2x6_t): Ditto.
              (vfloat32mf2x7_t): Ditto.
              (vfloat32mf2x8_t): Ditto.
              (vfloat32m1x2_t): Ditto.
              (vfloat32m1x3_t): Ditto.
              (vfloat32m1x4_t): Ditto.
              (vfloat32m1x5_t): Ditto.
              (vfloat32m1x6_t): Ditto.
              (vfloat32m1x7_t): Ditto.
              (vfloat32m1x8_t): Ditto.
              (vfloat32m2x2_t): Ditto.
              (vfloat32m2x3_t): Ditto.
              (vfloat32m2x4_t): Ditto.
              (vfloat32m4x2_t): Ditto.
              (vfloat64m1x2_t): Ditto.
              (vfloat64m1x3_t): Ditto.
              (vfloat64m1x4_t): Ditto.
              (vfloat64m1x5_t): Ditto.
              (vfloat64m1x6_t): Ditto.
              (vfloat64m1x7_t): Ditto.
              (vfloat64m1x8_t): Ditto.
              (vfloat64m2x2_t): Ditto.
              (vfloat64m2x3_t): Ditto.
              (vfloat64m2x4_t): Ditto.
              (vfloat64m4x2_t): Ditto.
              * config/riscv/riscv-vector-builtins.h (DEF_RVV_TUPLE_TYPE):
      	  Ditto.
              * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
              * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New
      	  function.
              (TUPLE_ENTRY): Ditto.
              (riscv_v_ext_mode_p): New function.
              (riscv_v_adjust_nunits): Add tuple mode adjustment.
              (riscv_classify_address): Ditto.
              (riscv_binary_cost): Ditto.
              (riscv_rtx_costs): Ditto.
              (riscv_secondary_memory_needed): Ditto.
              (riscv_hard_regno_nregs): Ditto.
              (riscv_hard_regno_mode_ok): Ditto.
              (riscv_vector_mode_supported_p): Ditto.
              (riscv_regmode_natural_size): Ditto.
              (riscv_array_mode): New function.
              (TARGET_ARRAY_MODE): New target hook.
              * config/riscv/riscv.md: Add tuple modes.
              * config/riscv/vector-iterators.md: Ditto.
              * config/riscv/vector.md (mov<mode>): Add tuple modes data
      	  movement.
              (*mov<VT:mode>_<P:mode>): Ditto.
      
      gcc/testsuite/ChangeLog:
      
              * gcc.target/riscv/rvv/base/abi-10.c: New test.
              * gcc.target/riscv/rvv/base/abi-11.c: New test.
              * gcc.target/riscv/rvv/base/abi-12.c: New test.
              * gcc.target/riscv/rvv/base/abi-13.c: New test.
              * gcc.target/riscv/rvv/base/abi-14.c: New test.
              * gcc.target/riscv/rvv/base/abi-15.c: New test.
              * gcc.target/riscv/rvv/base/abi-16.c: New test.
              * gcc.target/riscv/rvv/base/abi-8.c: New test.
              * gcc.target/riscv/rvv/base/abi-9.c: New test.
              * gcc.target/riscv/rvv/base/tuple-1.c: New test.
              * gcc.target/riscv/rvv/base/tuple-10.c: New test.
              * gcc.target/riscv/rvv/base/tuple-11.c: New test.
              * gcc.target/riscv/rvv/base/tuple-12.c: New test.
              * gcc.target/riscv/rvv/base/tuple-13.c: New test.
              * gcc.target/riscv/rvv/base/tuple-14.c: New test.
              * gcc.target/riscv/rvv/base/tuple-15.c: New test.
              * gcc.target/riscv/rvv/base/tuple-16.c: New test.
              * gcc.target/riscv/rvv/base/tuple-17.c: New test.
              * gcc.target/riscv/rvv/base/tuple-18.c: New test.
              * gcc.target/riscv/rvv/base/tuple-19.c: New test.
              * gcc.target/riscv/rvv/base/tuple-2.c: New test.
              * gcc.target/riscv/rvv/base/tuple-20.c: New test.
              * gcc.target/riscv/rvv/base/tuple-21.c: New test.
              * gcc.target/riscv/rvv/base/tuple-22.c: New test.
              * gcc.target/riscv/rvv/base/tuple-23.c: New test.
              * gcc.target/riscv/rvv/base/tuple-24.c: New test.
              * gcc.target/riscv/rvv/base/tuple-25.c: New test.
              * gcc.target/riscv/rvv/base/tuple-26.c: New test.
              * gcc.target/riscv/rvv/base/tuple-27.c: New test.
              * gcc.target/riscv/rvv/base/tuple-3.c: New test.
              * gcc.target/riscv/rvv/base/tuple-4.c: New test.
              * gcc.target/riscv/rvv/base/tuple-5.c: New test.
              * gcc.target/riscv/rvv/base/tuple-6.c: New test.
              * gcc.target/riscv/rvv/base/tuple-7.c: New test.
              * gcc.target/riscv/rvv/base/tuple-8.c: New test.
              * gcc.target/riscv/rvv/base/tuple-9.c: New test.
              * gcc.target/riscv/rvv/base/user-10.c: New test.
              * gcc.target/riscv/rvv/base/user-11.c: New test.
              * gcc.target/riscv/rvv/base/user-12.c: New test.
              * gcc.target/riscv/rvv/base/user-13.c: New test.
              * gcc.target/riscv/rvv/base/user-14.c: New test.
              * gcc.target/riscv/rvv/base/user-15.c: New test.
              * gcc.target/riscv/rvv/base/user-7.c: New test.
              * gcc.target/riscv/rvv/base/user-8.c: New test.
              * gcc.target/riscv/rvv/base/user-9.c: New test.
      
      Signed-off-by: default avatarJu-Zhe Zhong <juzhe.zhong@rivai.ai>
      b68018c0
    • Jakub Jelinek's avatar
      Add targetm.libm_function_max_error · bd539c9b
      Jakub Jelinek authored
      As has been discussed before, the following patch adds target hook
      for math library function maximum errors measured in ulps.
      The default is to return ~0U which is a magic maximum value which means
      nothing is known about precision of the match function.
      
      The first argument is unsigned int because enum combined_fn isn't available
      everywhere where target hooks are included but is expected to be given
      the enum combined_fn value, although it should be used solely to find out
      which kind of match function (say sin vs. cos vs. sqrt vs. exp10) rather
      than its variant (f suffix, no suffix, l suffix, f128 suffix, ...), for
      which there is the machine_mode argument.
      The last argument is a bool, if it is false, the function should return
      maximum known error in ulps for a given function (taking -frounding-math
      into account if enabled), with 0.5ulps being represented as 0.
      If it is true, it is about whether the function can return values outside of
      an intrinsic finite range for the fu...
      bd539c9b
    • Jan Beulich's avatar
      testsuite/C++: suppress filename canonicalization in module tests · d76c343d
      Jan Beulich authored
      The pathname underneath gcm.cache/ is determined from the effective name
      used for the main input file of a particular module. When modules are
      built, no canonicalization occurs for the main input file. Hence the
      module file wouldn't be found if a different (the canonicalized) file
      name was used when importing that same module. (This is an effect of
      importing happening in the preprocessor, just like #include handling.)
      
      Since it doesn't look easy to make module generation use libcpp's
      maybe_shorter_path() (in fact I'd consider this a layering violation,
      while cloning the logic would - at least in principle - be prone to both
      going out of sync), simply suppress system header path canonicalization
      for the respective tests.
      
      gcc/testsuite/
      
      	* g++.dg/modules/alias-1_b.C: Add -fno-canonical-system-headers.
      	* g++.dg/modules/alias-1_d.C: Likewise.
      	* g++.dg/modules/alias-1_e.C: Likewise.
      	* g++.dg/modules/alias-1_f.C: Likewise.
      	* g++.dg/modules/cpp-6_c.C: Likewise.
      	* g++.dg/modules/dir-only-2_b.C: Likewise.
      d76c343d
    • Jan Beulich's avatar
      testsuite/C++: cope with IPv6 being unavailable · 9be54d6a
      Jan Beulich authored
      When IPv6 is disabled in the kernel, the error message coming back from
      Cody::OpenInet6() is different from the sole so far expected one.
      
      gcc/testsuite/
      
      	* g++.dg/modules/bad-mapper-3.C: Relax failure pattern.
      9be54d6a
    • Alexandre Oliva's avatar
      harden-conditionals: detach values before compares · f9b91090
      Alexandre Oliva authored
      The optimization barriers inserted after compares enable GCC to derive
      information about the values from e.g. the taken paths, or the absence
      of exceptions.  Move them before the original compares, so that the
      reversed compares test copies of the original operands, without
      further optimizations.
      
      
      for  gcc/ChangeLog
      
      	* gimple-harden-conditionals.cc (insert_edge_check_and_trap):
      	Move detach value calls...
      	(pass_harden_conditional_branches::execute): ... here.
      	(pass_harden_compares::execute): Detach values before
      	compares.
      
      for  gcc/testsuite/ChangeLog
      
      	* c-c++-common/torture/harden-cond-comp.c: New.
      f9b91090
    • GCC Administrator's avatar
      Daily bump. · 32a98ccd
      GCC Administrator authored
      32a98ccd
    • Joseph Myers's avatar
      Update gcc .po files · e86d01af
      Joseph Myers authored
      	* be.po, da.po, de.po, el.po, es.po, fi.po, fr.po, hr.po, id.po,
      	ja.po, nl.po, ru.po, sr.po, sv.po, tr.po, uk.po, vi.po, zh_CN.po,
      	zh_TW.po: Update.
      e86d01af
    • Andrew Stubbs's avatar
      amdgcn: Fix addsub bug · b17c57b0
      Andrew Stubbs authored
      The vec_fmsubadd instuction actually had add twice, by mistake.
      
      Also improve code-gen for all the complex patterns by using properly
      undefined values.  Mostly this just prevents the compiler reserving space
      in the stack frame.
      
      gcc/ChangeLog:
      
      	* config/gcn/gcn-valu.md (cmul<conj_op><mode>3): Use gcn_gen_undef.
      	(cml<addsub_as><mode>4): Likewise.
      	(vec_addsub<mode>3): Likewise.
      	(cadd<rot><mode>3): Likewise.
      	(vec_fmaddsub<mode>4): Likewise.
      	(vec_fmsubadd<mode>4): Likewise, and use sub for the odd lanes.
      b17c57b0
  2. Apr 27, 2023
    • Jason Merrill's avatar
      c++: print conversion error at candidate location · 14e881eb
      Jason Merrill authored
      In testcases like this one, the printing of candidates in a diagnostic has
      been longer than necessary because it jumps back and forth between the call
      site and the candidate site.  So here, we first say at the call site that no
      match was found; then we note the candidate site, and then explain why it's
      not suitable back at the call site, which means printing the call site line
      with caret again.  With this patch, the conversion diagnostic is at the same
      location as the candidate, so we don't need to print any input line.
      
      gcc/cp/ChangeLog:
      
      	* call.cc (print_conversion_rejection): Use iloc_sentinel.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/template/copy1.C: Adjust error lines.
      14e881eb
    • Pan Li's avatar
      RISC-V: Add required tls to read thread pointer test · e0cf929d
      Pan Li authored
      
      
      The read-thread-pointer test may require the gcc configured
      with --enable-tls. If no, there x4 (aka tp) register will not
      be presented in the assembly code.
      
      This patch requires the tls for the dg checking. It will perform
      the test checking if --enable-tls and mark the test as unsupported
      if --disable-tls.
      
      Configured with --enable-tls:
      === gcc Summary ===
      of expected passes            16
      
      Configured with --disable-tls:
      === gcc Summary ===
      of unsupported tests          8
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/riscv/read-thread-pointer.c: Add required tls.
      
      Signed-off-by: default avatarPan Li <pan2.li@intel.com>
      e0cf929d
    • Andrew Pinski's avatar
      PHIOPT: Allow MIN/MAX to have up to 2 MIN/MAX expressions for early phiopt · 82f4f90a
      Andrew Pinski authored
      In the early PHIOPT mode, the original minmax_replacement, would
      replace a PHI node with up to 2 min/max expressions in some cases,
      this allows for that too.
      
      OK? Bootstrapped and tested on x86_64-linux-gnu with no regressions.
      
      gcc/ChangeLog:
      
      	* tree-ssa-phiopt.cc (phiopt_early_allow): Allow for
      	up to 2 min/max expressions in the sequence/match code.
      82f4f90a
    • Andrew Pinski's avatar
      MIN/MAX should be treated similar as comparisons for trapping · 5fecfed8
      Andrew Pinski authored
      While looking into moving optimizations from minmax_replacement
      in phiopt to match.pd, I Noticed that min/max were considered
      trapping even if -ffinite-math-only was being used. This changes
      those expressions to be similar as comparisons so that they are
      not considered trapping if -ffinite-math-only is on.
      
      OK? Bootstrapped and tested with no regressions on x86_64-linux-gnu.
      
      gcc/ChangeLog:
      
      	* rtlanal.cc (may_trap_p_1): Treat SMIN/SMAX similar as
      	COMPARISON.
      	* tree-eh.cc (operation_could_trap_helper_p): Treate
      	MIN_EXPR/MAX_EXPR similar as other comparisons.
      5fecfed8
    • Andrew Pinski's avatar
      PHIOPT: Move store_elim_worker into pass_cselim::execute · ba9975a2
      Andrew Pinski authored
      This simple patch moves the body of store_elim_worker
      direclty into pass_cselim::execute.
      
      Also removes unneeded prototypes too.
      
      OK? Bootstrapped and tested on x86_64-linux-gnu with no regressions.
      
      gcc/ChangeLog:
      
      	* tree-ssa-phiopt.cc (cond_store_replacement): Remove
      	prototype.
      	(cond_if_else_store_replacement): Likewise.
      	(get_non_trapping): Likewise.
      	(store_elim_worker): Move into ...
      	(pass_cselim::execute): This.
      ba9975a2
    • Andrew Pinski's avatar
      PHIOPT: Rename tree_ssa_phiopt_worker to pass_phiopt::execute · 4c728f20
      Andrew Pinski authored
      Now that store elimination and phiopt does not
      share outer code, we can move tree_ssa_phiopt_worker
      directly into pass_phiopt::execute and remove
      many declarations (prototypes) from the file.
      
      gcc/ChangeLog:
      
      	* tree-ssa-phiopt.cc (two_value_replacement): Remove
      	prototype.
      	(match_simplify_replacement): Likewise.
      	(factor_out_conditional_conversion): Likewise.
      	(value_replacement): Likewise.
      	(minmax_replacement): Likewise.
      	(spaceship_replacement): Likewise.
      	(cond_removal_in_builtin_zero_pattern): Likewise.
      	(hoist_adjacent_loads): Likewise.
      	(tree_ssa_phiopt_worker): Move into ...
      	(pass_phiopt::execute): this.
      4c728f20
    • Andrew Pinski's avatar
      PHIOPT: Split out store elimination from phiopt · b9fedabe
      Andrew Pinski authored
      Since the last cleanups, it made easier to see
      that we should split out the store elimination
      worker from tree_ssa_phiopt_worker function.
      
      OK? Bootstrapped and tested on x86_64-linux-gnu with no regressions.
      
      gcc/ChangeLog:
      
      	* tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove
      	do_store_elim argument and split that part out to ...
      	(store_elim_worker): This new function.
      	(pass_cselim::execute): Call store_elim_worker.
      	(pass_phiopt::execute): Update call to tree_ssa_phiopt_worker.
      b9fedabe
    • Robin Dapp's avatar
      MAINTAINERS: Change my email address. · b26ce75e
      Robin Dapp authored
      I'm at Ventana now.  Change my email address accordingly.  Also, add
      myself to the DCO list.
      
      ChangeLog:
      
      	* MAINTAINERS: Change my email address.
      b26ce75e
    • Jan Hubicka's avatar
      Unloop loops that no longer loops in tree-ssa-loop-ch · f2d6beb7
      Jan Hubicka authored
      I noticed this after adding sanity check that the upper bound on number
      of iterations never drop to -1.  It seems to be relatively common case
      (happening few hundred times in testsuite and also during bootstrap)
      that loop-ch duplicates enough so the loop itself no longer loops.
      
      This is later detected in loop unrolling but since we test the number
      of iterations anyway it seems better to do that earlier.
      
      	* cfgloopmanip.h (unloop_loops): Export.
      	* tree-ssa-loop-ch.cc (ch_base::copy_headers): Unloop loops
      	that no longer loop.
      	* tree-ssa-loop-ivcanon.cc (unloop_loops): Export; do not free
      	vectors of loops to unloop.
      	(canonicalize_induction_variables): Free vectors here.
      	(tree_unroll_loops_completely): Free vectors here.
      f2d6beb7
    • Richard Biener's avatar
      tree-optimization/109170 - bogus use-after-free with __builtin_expect · 65369ab6
      Richard Biener authored
      The following generalizes the range-op for __builtin_expect
      by using the fnspec machinery.
      
      	PR tree-optimization/109170
      	* gimple-range-op.cc (gimple_range_op_handler::maybe_builtin_call):
      	Handle __builtin_expect and similar via cfn_pass_through_arg1
      	and inspecting the calls fnspec.
      	* builtins.cc (builtin_fnspec): Handle BUILT_IN_EXPECT
      	and BUILT_IN_EXPECT_WITH_PROBABILITY.
      65369ab6
    • Alexandre Oliva's avatar
      Use CONFIG_SHELL-/bin/sh in genmultilib · b5f04a4d
      Alexandre Oliva authored
      There are still shells on some systems that lack the ability to start
      scripts when not using the shell name explicitly.  Adjust genmultilib
      to use ${CONFIG_SHELL-/bin/sh} the same way configure does.
      
      
      for  gcc/ChangeLog
      
      	* genmultilib: Use CONFIG_SHELL to run sub-scripts.
      b5f04a4d
    • Aldy Hernandez's avatar
      Normalize addresses in IPA before calling range_op_handler [PR109639] · 2b8ac1df
      Aldy Hernandez authored
      The old legacy code would allow building ranges containing symbolics,
      even though the entire ranger ecosystem does not handle them.  These
      were normalized into non-zero ranges by helper functions in VRP
      (range_fold_*_expr) before calling the ranger.  The only users of
      these functions should have been legacy VRP, which is no more.
      However, a handful of users crept into IPA, even though these
      functions shouldn't never been called outside of VRP or vr-values.
      
      The issue here is that IPA is building a range of [&foo, &foo] and
      expecting range_fold_binary to normalize it to non-zero.  Fixed by
      adding a helper function before calling the range_op handler.
      
      I think these covers the problematic ranges.  If not, I'll come up
      with something more generalized that does not involve polluting
      irange::set with the normalization code.  After all, this only
      involves a handful of IPA places.
      
      I've also added an assert in irange::set() making it easier to detect
      any possible fallout without having to drill deep into the setter.
      
      gcc/ChangeLog:
      
      	PR tree-optimization/109639
      	* ipa-cp.cc (ipa_value_range_from_jfunc): Normalize range.
      	(propagate_vr_across_jump_function): Same.
      	* ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
      	* ipa-prop.h (ipa_range_set_and_normalize): New.
      	* value-range.cc (irange::set): Assert min and max are INTEGER_CST.
      2b8ac1df
    • Richard Biener's avatar
      wrong GIMPLE from (bit_field_ref CTOR ..) simplification · a82c6ab0
      Richard Biener authored
      When we simplify a BIT_FIELD_REF of a CTOR like { _1, _2, _3, _4 }
      and attempt to produce (view converted) { _1, _2 } for a selected
      subset we fail to realize this cannot be done from match.pd since
      we have no way to write the resulting CTOR "operation" and the
      built CTOR { _1, _2 } isn't a GIMPLE value.
      
      This kind of simplifications have to be done in forwprop (or would
      need a match.pd syntax extension) where we can split out the CTOR
      to a separate stmt.
      
      The following disables this particular simplification when we are
      simplifying GIMPLE.  With enhanced IL checking this otherwise
      causes ICEs in the testsuite from vectorized code.
      
      	* match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Do not
      	create a CTOR operand in the result when simplifying GIMPLE.
      a82c6ab0
    • Richard Biener's avatar
      Properly gimplify handled component chains on registers · 0403d295
      Richard Biener authored
      When for example complex lowering wants to extract the imaginary
      part of a complex variable for lowering a complex move we can
      end up with it generating __imag <VIEW_CONVERT_EXPR <_22> > which
      is valid GENERIC.  It then feeds that to the gimplifier via
      force_gimple_operand but that fails to split up this chain
      of handled components, generating invalid GIMPLE catched by
      verification when PR109644 is fixed.
      
      The following rectifies this by noting in gimplify_compound_lval
      when the base object which we gimplify first ends up being a
      register.
      
      	* gimplify.cc (gimplify_compound_lval): When the base
      	gimplified to a register make sure to split up chains
      	of operations.
      0403d295
    • Richard Biener's avatar
      ipa/109607 - properly gimplify conversions introduced by IPA param manipulation · d89e23f2
      Richard Biener authored
      The following addresses IPA param manipulation (through IPA SRA)
      replacing
      
        BIT_FIELD_REF <*this_8(D), 8, 56>
      
      with
      
        BIT_FIELD_REF <VIEW_CONVERT_EXPR<const struct profile_count>(ISRA.814), 8, 56>
      
      which is supposed to be invalid GIMPLE (ISRA.814 is a register).
      There's currently insufficient checking in place to catch this in the
      IL verifier but I am working on that as part of fixing PR109594.
      
      The solution for the particular testcase I am running into this is
      to split the conversion to a separate stmt.  Generally the modification
      phase is set up for this but the extra_stmts sequence isn't passed
      around everywhere.  The following passes it to modify_expression
      from modify_assignment when rewriting the RHS.
      
      	PR ipa/109607
      	* ipa-param-manipulation.h
      	(ipa_param_body_adjustments::modify_expression): Add extra_stmts
      	argument.
      	* ipa-param-manipulation.cc
      	(ipa_param_body_adjustments::modify_expression): Likewise.
      	When we need a conversion and the replacement is a register
      	split the conversion out.
      	(ipa_param_body_adjustments::modify_assignment): Pass
      	extra_stmts to RHS modify_expression.
      
      	* g++.dg/torture/pr109607.C: New testcase.
      d89e23f2
    • Jonathan Wakely's avatar
      libstdc++: Fix typos in doxygen comments · 481281cc
      Jonathan Wakely authored
      libstdc++-v3/ChangeLog:
      
      	* include/bits/mofunc_impl.h: Fix typo in doxygen comment.
      	* include/std/format: Likewise.
      481281cc
    • Jonathan Wakely's avatar
      libstdc++: Remove obsolete options from Doxygen config · efa12764
      Jonathan Wakely authored
      libstdc++-v3/ChangeLog:
      
      	* doc/doxygen/user.cfg.in (FORMULA_TRANSPARENT, DOT_FONTNAME)
      	(DOT_FONTSIZE, DOT_TRANSPARENT): Remove obsolete options.
      efa12764
    • Jonathan Wakely's avatar
      libstdc++: Reduce Doxygen output for PDF · afa69618
      Jonathan Wakely authored
      Including the header source code in the doxygen-generated PDF file makes
      it too large, and causes pdflatex to run out of memory. If we only set
      SOURCE_BROWSER=YES for the HTML docs then we won't include the sources
      in the PDF file.
      
      There are several macros defined for std::valarray that are only used to
      generate repetitive code and then #undef'd. Those aren't useful in the
      doxygen docs, especially the ones that reuse the same name in different
      files. Omitting them avoids warnings about duplicate labels in the
      refman.tex file.
      
      libstdc++-v3/ChangeLog:
      
      	* doc/doxygen/user.cfg.in (SOURCE_BROWSER): Only set to YES for
      	HTML docs.
      	* include/bits/gslice_array.h (_DEFINE_VALARRAY_OPERATOR): Omit
      	from doxygen docs.
      	* include/bits/indirect_array.h (_DEFINE_VALARRAY_OPERATOR):
      	Likewise.
      	* include/bits/mask_array.h (_DEFINE_VALARRAY_OPERATOR):
      	Likewise.
      	* include/bits/slice_array.h (_DEFINE_VALARRAY_OPERATOR):
      	Likewise.
      	* include/std/valarray (_DEFINE_VALARRAY_UNARY_OPERATOR)
      	(_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT)
      	(_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT)
      	(_DEFINE_BINARY_OPERATOR): Likewise.
      afa69618
    • Jonathan Wakely's avatar
      libstdc++: Improve doxygen docs for <memory_resource> · afcf2b09
      Jonathan Wakely authored
      libstdc++-v3/ChangeLog:
      
      	* include/bits/memory_resource.h: Improve doxygen comments.
      	* include/std/memory_resource: Likewise.
      afcf2b09
    • Jonathan Wakely's avatar
      libstdc++: Add @headerfile and @since to doxygen comments [PR40380] · 865869dc
      Jonathan Wakely authored
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/40380
      	* include/bits/basic_string.h: Improve doxygen comments.
      	* include/bits/cow_string.h: Likewise.
      	* include/bits/forward_list.h: Likewise.
      	* include/bits/fs_dir.h: Likewise.
      	* include/bits/fs_path.h: Likewise.
      	* include/bits/quoted_string.h: Likewise.
      	* include/bits/stl_bvector.h: Likewise.
      	* include/bits/stl_map.h: Likewise.
      	* include/bits/stl_multimap.h: Likewise.
      	* include/bits/stl_multiset.h: Likewise.
      	* include/bits/stl_set.h: Likewise.
      	* include/bits/stl_vector.h: Likewise.
      	* include/bits/unordered_map.h: Likewise.
      	* include/bits/unordered_set.h: Likewise.
      	* include/std/filesystem: Likewise.
      	* include/std/iomanip: Likewise.
      865869dc
    • Jonathan Wakely's avatar
      libstdc++: Make std::random_device throw std::system_error [PR105081] · f9412ced
      Jonathan Wakely authored
      This changes std::random_device constructors to throw std::system_error
      (with EINVAL as the error code) when the constructor argument is
      invalid. We can also throw std::system_error when read(2) fails so that
      the exception includes the additional information provided by errno.
      
      As noted in the PR, this is consistent with libc++, and doesn't break
      any existing code which catches std::runtime_error, because those
      handlers will still catch std::system_error.
      
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/105081
      	* src/c++11/random.cc (__throw_syserr): New function.
      	(random_device::_M_init, random_device::_M_init_pretr1): Use new
      	function for bad tokens.
      	(random_device::_M_getval): Use new function for read errors.
      	* testsuite/util/testsuite_random.h (random_device_available):
      	Change catch handler to use std::system_error.
      f9412ced
    • Jakub Jelinek's avatar
      c: Fix up error-recovery on non-empty VLA initializers [PR109409] · d8842271
      Jakub Jelinek authored
      On the following testcase we ICE, because after we emit the
      variable-sized object may not be initialized except with an empty initializer
      error we don't really reset the initializer to error_mark_node and then at
      -Wformat checking time we ICE on seeing STRING_CST initializer for a VLA.
      
      The following patch just arranges for error_mark_node to be returned after
      the error diagnostics.
      
      2023-04-27  Jakub Jelinek  <jakub@redhat.com>
      
      	PR c/109409
      	* c-parser.cc (c_parser_initializer): Move diagnostics about
      	initialization of variable sized object with non-empty initializer
      	after c_parser_expr_no_commas call and ret.set_error (); after it.
      
      	* gcc.dg/pr109409.c: New test.
      d8842271
    • Jakub Jelinek's avatar
      c: Fix up error-recovery on functions initialized as variables [PR109412] · a1030fbf
      Jakub Jelinek authored
      The change to allow empty initializers in C broke error-recovery on the
      following testcase.  We are emitting function %qD is initialized like a
      variable error early; if the initializer is non-empty, we just emit
      another error that the initializer is invalid.  Previously if it was empty,
      we'd emit another error that scalar is being initialized by empty
      initializer (not really correct), but now we instead just try to
      build_zero_cst for the FUNCTION_TYPE and ICE on it.
      
      The following patch just emits the same diagnostics for the empty
      initializers as we emit for the non-empty ones.
      
      2023-04-27  Jakub Jelinek  <jakub@redhat.com>
      
      	PR c/107682
      	PR c/109412
      	* c-typeck.cc (pop_init_level): If constructor_type is FUNCTION_TYPE,
      	reject empty initializer as invalid.
      
      	* gcc.dg/pr109412.c: New test.
      a1030fbf
    • Jonathan Wakely's avatar
      doc: Add explanation of zero-length array example · 429c72eb
      Jonathan Wakely authored
      gcc/ChangeLog:
      
      	* doc/extend.texi (Zero Length): Describe example.
      429c72eb
    • Richard Biener's avatar
      tree-optimization/109594 - wrong register promotion · 7bcdcf86
      Richard Biener authored
      We fail to verify the constraints under which we allow handled
      components to wrap registers.  The gcc.dg/pr70022.c testcase shows
      that we happily end up with
      
        _2 = VIEW_CONVERT_EXPR<int[4]>(v_1(D))
      
      as produced by SSA rewrite and update_address_taken.  But the intent
      was that we wrap registers with at most a single level of handled
      components and specifically only allow __real, __imag, BIT_FIELD_REF
      and VIEW_CONVERT_EXPR on them, but not ARRAY_REF or COMPONENT_REF.
      
      Together with the improved gimple_load predicate taking advantage
      of the above and ASAN this eventually ICEd.
      
      The following fixes update_address_taken as to this constraint.
      
      	PR tree-optimization/109594
      	* tree-ssa.cc (non_rewritable_mem_ref_base): Constrain
      	what we rewrite to a register based on the above.
      7bcdcf86
    • Jan Beulich's avatar
      testsuite: adjust NOP expectations for RISC-V · d94ca762
      Jan Beulich authored
      RISC-V will emit ".option nopic" when -fno-pie is in effect, which
      matches the generic pattern. Just like done for Alpha, special-case
      RISC-V.
      
      gcc/testsuite/
      
      	* c-c++-common/patchable_function_entry-decl.c: Special-case
      	RISC-V.
      	* c-c++-common/patchable_function_entry-default.c: Likewise.
      	* c-c++-common/patchable_function_entry-definition.c: Likewise.
      d94ca762
    • Jason Merrill's avatar
      c++: restore instantiate_decl assert · 95d4c0d2
      Jason Merrill authored
      For PR61445 I removed this assert, but PR108242 demonstrated why it's still
      useful; to avoid regressing the former testcase I check pattern_defined
      in the assert.
      
      This reverts r212524.
      
      	PR c++/61445
      
      gcc/cp/ChangeLog:
      
      	* pt.cc (instantiate_decl): Assert !defer_ok for local
      	class members.
      95d4c0d2
    • GCC Administrator's avatar
      Daily bump. · 4a3dbcbd
      GCC Administrator authored
      4a3dbcbd
    • Hans-Peter Nilsson's avatar
      libgcc CRIS: Define TARGET_HAS_NO_HW_DIVIDE · d7f0bc05
      Hans-Peter Nilsson authored
      With this, execution time for e.g. __moddi3 go from 59 to 40 cycles in
      the "fast" case or from 290 to 200 cycles in the "slow" case (when the
      !TARGET_HAS_NO_HW_DIVIDE variant calls division and modulus functions
      for 32-bit SImode), as exposed by gcc.c-torture/execute/arith-rand-ll.c
      compiled for -march=v10.
      
      Unfortunately, it just puts a performance improvement "dent" of 0.07%
      in a arith-rand-ll.c-based performance test - where all loops are also
      reduced to 1/10.
      
      The size of every affected libgcc function is reduced to less than
      half and they are all now leaf functions.
      
      	* config/cris/t-cris (HOST_LIBGCC2_CFLAGS): Add
      	-DTARGET_HAS_NO_HW_DIVIDE.
      d7f0bc05
    • Patrick O'Neill's avatar
      RISC-V: Fix sync.md and riscv.cc whitespace errors · 2a268729
      Patrick O'Neill authored
      This patch fixes whitespace errors introduced with
      https://gcc.gnu.org/pipermail/gcc-patches/2023-April/616807.html
      
      
      
      2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
      
      gcc/ChangeLog:
      
      	* config/riscv/riscv.cc: Fix whitespace.
      	* config/riscv/sync.md: Fix whitespace.
      
      Signed-off-by: default avatarPatrick O'Neill <patrick@rivosinc.com>
      2a268729