diff options
Diffstat (limited to 'gcc/testsuite/gfortran.dg/loc_1.f90')
-rw-r--r-- | gcc/testsuite/gfortran.dg/loc_1.f90 | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/loc_1.f90 b/gcc/testsuite/gfortran.dg/loc_1.f90 new file mode 100644 index 000000000..2c070dfb1 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/loc_1.f90 @@ -0,0 +1,26 @@ +! { dg-do run } + +! This test is here to prevent a regression in gfc_conv_intrinsic_loc. +! Taking the loc of something in a common block was a special case +! that caused in internal compiler error in gcc/expr.c, in +! expand_expr_addr_expr_1(). +program test + common /targ/targ + integer targ(10) + call fn +end program test + +subroutine fn + common /targ/targ + integer targ(10) + call foo (loc (targ)) ! Line that caused ICE +end subroutine fn + +subroutine foo (ii) + use iso_c_binding, only: c_intptr_t + common /targ/targ + integer targ(10) + integer(c_intptr_t) ii + targ(2) = ii +end subroutine foo + |