This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Recent VCG changes break gfortran's -std=f95 option
- From: Steve Kargl <sgk at troutmask dot apl dot washington dot edu>
- To: gcc at gcc dot gnu dot org, fortran at gcc dot gnu dot org
- Date: Mon, 5 Jun 2006 19:27:30 -0700
- Subject: Recent VCG changes break gfortran's -std=f95 option
I have the simple program
program a
call random_seed()
end program a
in the files a.f90 and b.f90. That is, a.f90 and b.f90
are identical.
gfortran -o a -fdump-tree-all a.f90
gfortran -o b -fdump-tree-all -std=f95 b.f90
--- a.f90.003t.original Mon Jun 5 19:09:22 2006
+++ b.f90.003t.original Mon Jun 5 19:09:15 2006
@@ -1,6 +1,6 @@
MAIN__ ()
{
- _gfortran_set_std (70, 127, 0);
+ _gfortran_set_std (2, 11, 0);
_gfortran_random_seed (0B, 0B, 0B);
--- a.f90.004t.gimple Mon Jun 5 19:09:22 2006
+++ b.f90.004t.gimple Mon Jun 5 19:09:15 2006
@@ -1,6 +1,6 @@
MAIN__ ()
{
- _gfortran_set_std (70, 127, 0);
+ _gfortran_set_std (2, 11, 0);
_gfortran_random_seed (0B, 0B, 0B);
}
--- a.f90.007t.vcg Mon Jun 5 19:09:22 2006
+++ b.f90.007t.vcg Mon Jun 5 19:09:15 2006
@@ -3,7 +3,6 @@
node: { title: "EXIT" label: "EXIT" }
edge: { sourcename: "ENTRY" targetname: "2" linestyle: solid priority: 100 }
-node: { title: "2" label: "#2\ncall_expr (1)\nreturn_expr (2)"}
-edge: { sourcename: "2" targetname: "EXIT" priority: 100 linestyle: solid }
+node: { title: "2" label: "#2\ncall_expr (1)\ncall_expr (2)"}
}
--- a.f90.022t.cfg Mon Jun 5 19:09:22 2006
+++ b.f90.022t.cfg Mon Jun 5 19:09:15 2006
@@ -5,10 +5,9 @@
{
# BLOCK 2
# PRED: ENTRY (fallthru)
- _gfortran_set_std (70, 127, 0);
+ _gfortran_set_std (2, 11, 0);
_gfortran_random_seed (0B, 0B, 0B);
- return;
- # SUCC: EXIT
+ # SUCC:
}
These last two seem to be related to the infinite recursion
that I see. The diff for the assembly is
--- a.s Mon Jun 5 19:25:59 2006
+++ b.s Mon Jun 5 19:26:12 2006
@@ -1,4 +1,4 @@
- .file "a.f90"
+ .file "b.f90"
.text
.globl MAIN__
.type MAIN__, @function
@@ -9,15 +9,13 @@
movq %rsp, %rbp
.LCFI1:
movl $0, %edx
- movl $127, %esi
- movl $70, %edi
+ movl $11, %esi
+ movl $2, %edi
call _gfortran_set_std
movl $0, %edx
movl $0, %esi
movl $0, %edi
call _gfortran_random_seed
- leave
- ret
.LFE2:
.size MAIN__, .-MAIN__
.section .eh_frame,"a",@progbits
The absense of "leave" and "ret" can't be a Good Thing.
--
Steve