[Bug fortran/66907] Correct code produces "Segmentation fault - invalid memory reference"

2021-12-17 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66907

Andrew Pinski  changed:

   What|Removed |Added

  Known to work||11.1.0
  Known to fail||10.3.0

--- Comment #3 from Andrew Pinski  ---
Seems to be fixed in GCC 11+.

[Bug fortran/66907] Correct code produces Segmentation fault - invalid memory reference

2015-08-30 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66907

Dominique d'Humieres dominiq at lps dot ens.fr changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-08-30
 Ever confirmed|0   |1

--- Comment #2 from Dominique d'Humieres dominiq at lps dot ens.fr ---
I confirm the results of comment 1 from 4.8 up to trunk (6.0).


[Bug fortran/66907] Correct code produces Segmentation fault - invalid memory reference

2015-07-17 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66907

kargl at gcc dot gnu.org changed:

   What|Removed |Added

 CC||kargl at gcc dot gnu.org

--- Comment #1 from kargl at gcc dot gnu.org ---
(In reply to mrestelli from comment #0)
 The attached code compiles with gfortran and produces an error at
 runtime. As far as I can see, the code is correct. Unfortunately, I
 have been unable to reduce the test further; if I try, the problem
 disappears.
 
 
 $ gfortran gft.f90 -g -O0 -o gft
 $ ./gft 
 
 Program received signal SIGSEGV: Segmentation fault - invalid memory
 reference.
 
 Backtrace for this error:
 #0  0x7F281A1F6757
 #1  0x7F281A1F6D5E
 #2  0x7F281972EE8F
 #3  0x400A15 in __mod_a_MOD_mult at gft.f90:67
 #4  0x400F44 in __mod_a_MOD_check_t_b at gft.f90:38 (discriminator 2)
 #5  0x401160 in test at gft.f90:84 (discriminator 2)
 Speicherzugriffsfehler
 
 $ gfortran --version
 GNU Fortran (GCC) 6.0.0 20150715 (experimental)
 Copyright (C) 2015 Free Software Foundation, Inc.
 
 
 The correct behaviour should be
 
 $ ./gft 
  p(1):1
  p(2):1
 

Program appears to function correctly if one uses -O or -O2.
% gfc6 -o z -O er.f90
% ./z
 p(1):1
 p(2):1


without optimization one gets
(gdb) run
Starting program: /mnt/sgk/tmp/z 

Program received signal SIGSEGV, Segmentation fault.
0x00400cb5 in mod_a::mult (p1=..., p2=...) at er.f90:57
57p1_dat = p1%dat(1)

It also works without optimization if one uses a temp variable
in check_t_b().
 pure recursive function check_t_b(d) result(b)
  integer, intent(in) :: d
  type(t_b) :: b(2)

  type(t_b) :: xd, tmp

   xd = 1.0

   if(d.eq.1) then
 b = 1.0
   else
 tmp = xd**0
 b = tmp*check_t_b(1)
   endif