Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/gfortran.dg/assign_10.f90 @ 144:8f4e72ab4e11
fix segmentation fault caused by nothing next cur_op to end
author | Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 23 Dec 2018 21:23:56 +0900 |
parents | 84e7813d76e9 |
children | 1830386684a0 |
line wrap: on
line source
! { dg-do run } ! { dg-options "-O3 -fdump-tree-original" } ! Tests the fix for PR33850, in which one of the two assignments ! below would produce an unnecessary temporary for the index ! expression, following the fix for PR33749. ! ! Contributed by Dick Hendrickson on comp.lang.fortran, ! " Most elegant syntax for inverting a permutation?" 20071006 ! integer(4) :: p4(4) = (/2,4,1,3/) integer(4) :: q4(4) = (/2,4,1,3/) integer(8) :: p8(4) = (/2,4,1,3/) integer(8) :: q8(4) = (/2,4,1,3/) p4(q4) = (/(i, i = 1, 4)/) q4(q4) = (/(i, i = 1, 4)/) p8(q8) = (/(i, i = 1, 4)/) q8(q8) = (/(i, i = 1, 4)/) if (any(p4 .ne. q4)) STOP 1 if (any(p8 .ne. q8)) STOP 2 end ! Whichever is the default length for array indices will yield ! parm 18 times, because a temporary is not necessary. The other ! cases will all yield a temporary, so that atmp appears 18 times. ! Note that it is the kind conversion that generates the temp. ! ! { dg-final { scan-tree-dump-times "parm" 20 "original" } } ! { dg-final { scan-tree-dump-times "atmp" 18 "original" } }