[Bug fortran/90539] [10 Regression] 481.wrf slowdown by 25% on Intel Kaby with -Ofast -march=native starting with r271377

marxin at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed May 22 10:27:00 GMT 2019


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90539

--- Comment #14 from Martin Liška <marxin at gcc dot gnu.org> ---
Ok, so I isolated that to a single file and one gfc_conv_subref_array_arg call.
Problematic file is netcdf/netcdf.f90 and the gfc_conv_subref_array_arg call
happens
for:

(gdb) p *expr
$3 = {
  expr_type = EXPR_VARIABLE, 
  ts = {
    type = BT_REAL, 
    kind = 8, 
    u = {
      derived = 0x0, 
      cl = 0x0, 
      pad = 0
    }, 
    interface = 0x0, 
    is_c_interop = 0, 
    is_iso_c = 0, 
    f90_type = BT_UNKNOWN, 
    deferred = false, 
    interop_kind = 0x0
  }, 
  rank = 1, 
  shape = 0x0, 
  symtree = 0x27d3570, 
  ref = 0x2b83f20, 
  where = {
    nextc = 0x23bc358, 
    lb = 0x23bc230
  }, 
  base_expr = 0x0, 
  is_boz = 0, 
  is_snan = 0, 
  error = 0, 
  user_operator = 0, 
  mold = 0, 
  must_finalize = 0, 
  no_bounds_check = 0, 
  external_blas = 0, 
  do_not_resolve_again = 0, 
  do_not_warn = 0, 
  representation = {
    length = 0, 
    string = 0x0
  }, 
  value = {
    logical = 0, 
    iokind = M_READ, 
    integer = {{
        _mp_alloc = 0, 
        _mp_size = 0, 
        _mp_d = 0x0
      }}, 
    real = {{
        _mpfr_prec = 0, 
        _mpfr_sign = 0, 
        _mpfr_exp = 0, 
        _mpfr_d = 0x0
      }}, 
    complex = {{
        re = {{
            _mpfr_prec = 0, 
            _mpfr_sign = 0, 
            _mpfr_exp = 0, 
            _mpfr_d = 0x0
          }}, 
        im = {{
            _mpfr_prec = 0, 
            _mpfr_sign = 0, 
            _mpfr_exp = 0, 
            _mpfr_d = 0x0
          }}
      }}, 
    op = {
      op = GFC_INTRINSIC_BEGIN, 
      uop = 0x0, 

      op1 = 0x0, 
      op2 = 0x0
    }, 
    function = {
      actual = 0x0, 
      name = 0x0, 
      isym = 0x0, 
      esym = 0x0
    }, 
    compcall = {
      actual = 0x0, 
      name = 0x0, 
      base_object = 0x0, 
      tbp = 0x0, 
      ignore_pass = 0, 
      assign = 0
    }, 
    character = {
      length = 0, 
      string = 0x0
    }, 
    constructor = 0x0
  }, 
  param_list = 0x0
}

proc_name=0x155555068d20 "nf_put_vara_double"

(gdb) p *fsym
$5 = {
  name = 0x1555544a2c20 "_formal_107", 
  module = 0x0, 
  declared_at = {
    nextc = 0x23c86d4, 
    lb = 0x23c8590
  }, 
  ts = {
    type = BT_REAL, 
    kind = 8, 
    u = {
      derived = 0x0, 
      cl = 0x0, 
      pad = 0
    }, 
    interface = 0x0, 
    is_c_interop = 0, 
    is_iso_c = 0, 
    f90_type = BT_UNKNOWN, 
    deferred = false, 
    interop_kind = 0x0
  }, 
  attr = {
    allocatable = 0, 
    dimension = 1, 
    codimension = 0, 
    external = 0, 
    intrinsic = 0, 
    optional = 0, 
    pointer = 0, 
    target = 0, 
    value = 0, 
    volatile_ = 0, 
    temporary = 0, 
    dummy = 1, 
    result = 0, 
    assign = 0, 
    threadprivate = 0, 
    not_always_present = 0, 
    implied_index = 0, 
    subref_array_pointer = 0, 
    proc_pointer = 0, 
    asynchronous = 0, 
    contiguous = 0, 
    fe_temp = 0, 
    automatic = 0, 
    class_pointer = 0, 
    save = SAVE_NONE, 
    data = 0, 
    is_protected = 0, 
    use_assoc = 0, 
    used_in_submodule = 0, 
    use_only = 0, 
    use_rename = 0, 
    imported = 0, 
    host_assoc = 0, 
    in_namelist = 0, 
    in_common = 0, 
    in_equivalence = 0, 
    function = 0, 
    subroutine = 0, 
    procedure = 0, 
    generic = 0, 
    generic_copy = 0, 
    implicit_type = 0, 
    untyped = 0, 
    is_bind_c = 0, 
    extension = 0, 
    is_class = 0, 
    class_ok = 0, 
    vtab = 0, 
    vtype = 0, 
    is_c_interop = 0, 
    is_iso_c = 0, 
    sequence = 0, 
    elemental = 0, 
    pure = 0, 
    recursive = 0, 
    unmaskable = 0, 
    masked = 0, 
    contained = 0, 
    mod_proc = 0, 
    abstract = 0, 
    module_procedure = 0, 
    public_used = 0, 
    implicit_pure = 0, 
    array_outer_dependency = 0, 
    noreturn = 0, 
    entry = 0, 
    entry_master = 0, 
    mixed_entry_master = 0, 
    always_explicit = 0, 
    artificial = 0, 
    referenced = 0, 
    is_main_program = 0, 
    access = ACCESS_UNKNOWN, 
    intent = INTENT_UNKNOWN, 
    flavor = FL_VARIABLE, 
    if_source = IFSRC_UNKNOWN, 
    proc = PROC_UNKNOWN, 
    cray_pointer = 0, 
    cray_pointee = 0, 
    alloc_comp = 0, 
    pointer_comp = 0, 
    proc_pointer_comp = 0, 
    private_comp = 0, 
    zero_comp = 0, 
    coarray_comp = 0, 
    lock_comp = 0, 
    event_comp = 0, 
    defined_assign_comp = 0, 
    unlimited_polymorphic = 0, 
    has_dtio_procs = 0, 
    caf_token = 0, 
    select_type_temporary = 0, 
    associate_var = 0, 
    pdt_kind = 0, 
    pdt_len = 0, 
    pdt_type = 0, 
    pdt_template = 0, 
    pdt_array = 0, 
    pdt_string = 0, 
    omp_udr_artificial_var = 0, 
    omp_declare_target = 0, 
    omp_declare_target_link = 0, 
    oacc_declare_create = 0, 
    oacc_declare_copyin = 0, 
    oacc_declare_deviceptr = 0, 
    oacc_declare_device_resident = 0, 
    oacc_declare_link = 0, 
    oacc_routine_lop = OACC_ROUTINE_LOP_NONE, 
    ext_attr = 0, 
    volatile_ns = 0x0, 
    asynchronous_ns = 0x0
  }, 
  generic = 0x0, 
  component_access = ACCESS_UNKNOWN, 
  formal = 0x0, 
  formal_ns = 0x0, 
  f2k_derived = 0x0, 
  param_list = 0x0, 
  value = 0x0, 
  as = 0x2c899f0, 
  result = 0x0, 
  components = 0x0, 
  cp_pointer = 0x0, 
  entry_id = 0, 
  hash_value = 0, 
  common_next = 0x0, 
  common_head = 0x0, 
  dummy_order = 0, 
  namelist = 0x0, 
  namelist_tail = 0x0, 
  old_symbol = 0x0, 
  mark = 0, 
  gfc_new = 0, 
  tlink = 0x0, 
  equiv_built = 0, 
  forall_index = 0, 
  fn_result_spec = 0, 
  resolved = 0, 
  abr_modproc_decl = 0, 
  refs = 1, 
  ns = 0x2424e40, 
  backend_decl = 0x0, 
  from_intmod = INTMOD_NONE, 
  intmod_sym_id = 0, 
  binding_label = 0x0, 
  common_block = 0x0, 
  assoc = 0x0, 
  dt_next = 0x0


More information about the Gcc-bugs mailing list