1da0c48c4Sopenharmony_ci#! /bin/sh 2da0c48c4Sopenharmony_ci# Copyright (C) 2017 Red Hat, Inc. 3da0c48c4Sopenharmony_ci# This file is part of elfutils. 4da0c48c4Sopenharmony_ci# 5da0c48c4Sopenharmony_ci# This file is free software; you can redistribute it and/or modify 6da0c48c4Sopenharmony_ci# it under the terms of the GNU General Public License as published by 7da0c48c4Sopenharmony_ci# the Free Software Foundation; either version 3 of the License, or 8da0c48c4Sopenharmony_ci# (at your option) any later version. 9da0c48c4Sopenharmony_ci# 10da0c48c4Sopenharmony_ci# elfutils is distributed in the hope that it will be useful, but 11da0c48c4Sopenharmony_ci# WITHOUT ANY WARRANTY; without even the implied warranty of 12da0c48c4Sopenharmony_ci# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13da0c48c4Sopenharmony_ci# GNU General Public License for more details. 14da0c48c4Sopenharmony_ci# 15da0c48c4Sopenharmony_ci# You should have received a copy of the GNU General Public License 16da0c48c4Sopenharmony_ci# along with this program. If not, see <http://www.gnu.org/licenses/>. 17da0c48c4Sopenharmony_ci 18da0c48c4Sopenharmony_ci. $srcdir/test-subr.sh 19da0c48c4Sopenharmony_ci 20da0c48c4Sopenharmony_ci# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77589 21da0c48c4Sopenharmony_ci# 22da0c48c4Sopenharmony_ci# program repro 23da0c48c4Sopenharmony_ci# type small_stride 24da0c48c4Sopenharmony_ci# character*40 long_string 25da0c48c4Sopenharmony_ci# integer small_pad 26da0c48c4Sopenharmony_ci# end type small_stride 27da0c48c4Sopenharmony_ci# type(small_stride), dimension (20), target :: unpleasant 28da0c48c4Sopenharmony_ci# character*40, pointer, dimension(:):: c40pt 29da0c48c4Sopenharmony_ci# integer i 30da0c48c4Sopenharmony_ci# do i = 0,19 31da0c48c4Sopenharmony_ci# unpleasant(i+1)%small_pad = i+1 32da0c48c4Sopenharmony_ci# unpleasant(i+1)%long_string = char (ichar('0') + i) // '-hello' 33da0c48c4Sopenharmony_ci# end do 34da0c48c4Sopenharmony_ci# c40pt => unpleasant%long_string 35da0c48c4Sopenharmony_ci# print *, c40pt ! break-here 36da0c48c4Sopenharmony_ci# end program repro 37da0c48c4Sopenharmony_ci# 38da0c48c4Sopenharmony_ci# Needs GCC7+ 39da0c48c4Sopenharmony_ci# gfortran -o testfile-stridex dwarf-stridex.f90 -Wall -g 40da0c48c4Sopenharmony_ci 41da0c48c4Sopenharmony_citestfiles testfile-stridex 42da0c48c4Sopenharmony_ci 43da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/tests/varlocs --exprlocs -e testfile-stridex <<\EOF 44da0c48c4Sopenharmony_cimodule 'testfile-stridex' 45da0c48c4Sopenharmony_ci[b] CU 'dwarf-stridex.f90'@400717 46da0c48c4Sopenharmony_ci producer (strp) 47da0c48c4Sopenharmony_ci language (data1) 48da0c48c4Sopenharmony_ci identifier_case (data1) 49da0c48c4Sopenharmony_ci name (strp) 50da0c48c4Sopenharmony_ci comp_dir (strp) 51da0c48c4Sopenharmony_ci low_pc (addr) 52da0c48c4Sopenharmony_ci high_pc (data8) 53da0c48c4Sopenharmony_ci stmt_list (sec_offset) 54da0c48c4Sopenharmony_ci [2e] base_type "integer(kind=8)" 55da0c48c4Sopenharmony_ci byte_size (data1) 56da0c48c4Sopenharmony_ci encoding (data1) 57da0c48c4Sopenharmony_ci name (strp) 58da0c48c4Sopenharmony_ci [35] structure_type "small_stride" 59da0c48c4Sopenharmony_ci name (strp) 60da0c48c4Sopenharmony_ci byte_size (data1) 61da0c48c4Sopenharmony_ci decl_file (data1) 62da0c48c4Sopenharmony_ci decl_line (data1) 63da0c48c4Sopenharmony_ci sibling (ref4) 64da0c48c4Sopenharmony_ci [41] member "long_string" 65da0c48c4Sopenharmony_ci name (strp) 66da0c48c4Sopenharmony_ci decl_file (data1) 67da0c48c4Sopenharmony_ci decl_line (data1) 68da0c48c4Sopenharmony_ci type (ref4) 69da0c48c4Sopenharmony_ci data_member_location (data1) {plus_uconst(0)} 70da0c48c4Sopenharmony_ci [4d] member "small_pad" 71da0c48c4Sopenharmony_ci name (strp) 72da0c48c4Sopenharmony_ci decl_file (data1) 73da0c48c4Sopenharmony_ci decl_line (data1) 74da0c48c4Sopenharmony_ci type (ref4) 75da0c48c4Sopenharmony_ci data_member_location (data1) {plus_uconst(40)} 76da0c48c4Sopenharmony_ci [5a] string_type 77da0c48c4Sopenharmony_ci byte_size (data1) 78da0c48c4Sopenharmony_ci [5c] base_type "integer(kind=4)" 79da0c48c4Sopenharmony_ci byte_size (data1) 80da0c48c4Sopenharmony_ci encoding (data1) 81da0c48c4Sopenharmony_ci name (strp) 82da0c48c4Sopenharmony_ci [63] const_type 83da0c48c4Sopenharmony_ci type (ref4) 84da0c48c4Sopenharmony_ci [68] subprogram "main" 85da0c48c4Sopenharmony_ci external (flag_present) 86da0c48c4Sopenharmony_ci name (strp) 87da0c48c4Sopenharmony_ci decl_file (data1) 88da0c48c4Sopenharmony_ci decl_line (data1) 89da0c48c4Sopenharmony_ci type (ref4) 90da0c48c4Sopenharmony_ci low_pc (addr) 91da0c48c4Sopenharmony_ci high_pc (data8) 92da0c48c4Sopenharmony_ci frame_base (exprloc) {call_frame_cfa {bregx(7,8)}} 93da0c48c4Sopenharmony_ci GNU_all_tail_call_sites (flag_present) 94da0c48c4Sopenharmony_ci sibling (ref4) 95da0c48c4Sopenharmony_ci [89] formal_parameter "argc" 96da0c48c4Sopenharmony_ci name (strp) 97da0c48c4Sopenharmony_ci decl_file (data1) 98da0c48c4Sopenharmony_ci decl_line (data1) 99da0c48c4Sopenharmony_ci type (ref4) 100da0c48c4Sopenharmony_ci location (exprloc) {fbreg(-20)} 101da0c48c4Sopenharmony_ci [97] formal_parameter "argv" 102da0c48c4Sopenharmony_ci name (strp) 103da0c48c4Sopenharmony_ci decl_file (data1) 104da0c48c4Sopenharmony_ci decl_line (data1) 105da0c48c4Sopenharmony_ci type (ref4) 106da0c48c4Sopenharmony_ci location (exprloc) {fbreg(-32), deref} 107da0c48c4Sopenharmony_ci [a7] pointer_type 108da0c48c4Sopenharmony_ci byte_size (data1) 109da0c48c4Sopenharmony_ci type (ref4) 110da0c48c4Sopenharmony_ci [ad] base_type "character(kind=1)" 111da0c48c4Sopenharmony_ci byte_size (data1) 112da0c48c4Sopenharmony_ci encoding (data1) 113da0c48c4Sopenharmony_ci name (strp) 114da0c48c4Sopenharmony_ci [b4] subprogram "repro" 115da0c48c4Sopenharmony_ci name (strp) 116da0c48c4Sopenharmony_ci decl_file (data1) 117da0c48c4Sopenharmony_ci decl_line (data1) 118da0c48c4Sopenharmony_ci main_subprogram (flag_present) 119da0c48c4Sopenharmony_ci calling_convention (data1) 120da0c48c4Sopenharmony_ci low_pc (addr) 121da0c48c4Sopenharmony_ci high_pc (data8) 122da0c48c4Sopenharmony_ci frame_base (exprloc) {call_frame_cfa {bregx(7,8)}} 123da0c48c4Sopenharmony_ci GNU_all_tail_call_sites (flag_present) 124da0c48c4Sopenharmony_ci sibling (ref4) 125da0c48c4Sopenharmony_ci [d2] variable "c40pt" 126da0c48c4Sopenharmony_ci name (strp) 127da0c48c4Sopenharmony_ci decl_file (data1) 128da0c48c4Sopenharmony_ci decl_line (data1) 129da0c48c4Sopenharmony_ci type (ref4) 130da0c48c4Sopenharmony_ci location (exprloc) {fbreg(-128)} 131da0c48c4Sopenharmony_ci [e1] variable "span.0" 132da0c48c4Sopenharmony_ci name (strp) 133da0c48c4Sopenharmony_ci type (ref4) 134da0c48c4Sopenharmony_ci artificial (flag_present) 135da0c48c4Sopenharmony_ci location (exprloc) {fbreg(-80)} 136da0c48c4Sopenharmony_ci [ee] variable "i" 137da0c48c4Sopenharmony_ci name (string) 138da0c48c4Sopenharmony_ci decl_file (data1) 139da0c48c4Sopenharmony_ci decl_line (data1) 140da0c48c4Sopenharmony_ci type (ref4) 141da0c48c4Sopenharmony_ci location (exprloc) {fbreg(-68)} 142da0c48c4Sopenharmony_ci [fb] variable "unpleasant" 143da0c48c4Sopenharmony_ci name (strp) 144da0c48c4Sopenharmony_ci decl_file (data1) 145da0c48c4Sopenharmony_ci decl_line (data1) 146da0c48c4Sopenharmony_ci type (ref4) 147da0c48c4Sopenharmony_ci location (exprloc) {fbreg(-1008)} 148da0c48c4Sopenharmony_ci [10a] lexical_block 149da0c48c4Sopenharmony_ci low_pc (addr) 150da0c48c4Sopenharmony_ci high_pc (data8) 151da0c48c4Sopenharmony_ci sibling (ref4) 152da0c48c4Sopenharmony_ci [11f] lexical_block 153da0c48c4Sopenharmony_ci low_pc (addr) 154da0c48c4Sopenharmony_ci high_pc (data8) 155da0c48c4Sopenharmony_ci [131] lexical_block 156da0c48c4Sopenharmony_ci low_pc (addr) 157da0c48c4Sopenharmony_ci high_pc (data8) 158da0c48c4Sopenharmony_ci [142] lexical_block 159da0c48c4Sopenharmony_ci low_pc (addr) 160da0c48c4Sopenharmony_ci high_pc (data8) 161da0c48c4Sopenharmony_ci [153] lexical_block 162da0c48c4Sopenharmony_ci low_pc (addr) 163da0c48c4Sopenharmony_ci high_pc (data8) 164da0c48c4Sopenharmony_ci [167] array_type 165da0c48c4Sopenharmony_ci data_location (exprloc) {push_object_address, deref} 166da0c48c4Sopenharmony_ci associated (exprloc) {push_object_address, deref, lit0, ne} 167da0c48c4Sopenharmony_ci type (ref4) 168da0c48c4Sopenharmony_ci sibling (ref4) 169da0c48c4Sopenharmony_ci [178] subrange_type 170da0c48c4Sopenharmony_ci lower_bound (exprloc) {push_object_address, plus_uconst(32), deref} 171da0c48c4Sopenharmony_ci upper_bound (exprloc) {push_object_address, plus_uconst(40), deref} 172da0c48c4Sopenharmony_ci byte_stride (exprloc) {push_object_address, plus_uconst(24), deref, GNU_variable_value([e1]) {fbreg(-80)}, mul} 173da0c48c4Sopenharmony_ci [18f] array_type 174da0c48c4Sopenharmony_ci type (ref4) 175da0c48c4Sopenharmony_ci [194] subrange_type 176da0c48c4Sopenharmony_ci type (ref4) 177da0c48c4Sopenharmony_ci upper_bound (sdata) 178da0c48c4Sopenharmony_ciEOF 179da0c48c4Sopenharmony_ci 180da0c48c4Sopenharmony_ciexit 0 181