On Wed, Dec 02, 2015 at 10:02:33PM -0800, Steve Kargl wrote: > Paul, > > I'm stumped. Something is broken on i386-*-freebsd. :-( > > Running /mnt/kargl/gcc/gcc/testsuite/gfortran.dg/dg.exp ... > FAIL: gfortran.dg/submodule_10.f08 -O (internal compiler error) > FAIL: gfortran.dg/submodule_10.f08 -O (test for excess errors) > FAIL: gfortran.dg/submodule_11.f08 -O0 (internal compiler error) > FAIL: gfortran.dg/submodule_11.f08 -O0 (test for excess errors) > FAIL: gfortran.dg/submodule_11.f08 -O1 (internal compiler error) > FAIL: gfortran.dg/submodule_11.f08 -O1 (test for excess errors) > FAIL: gfortran.dg/submodule_11.f08 -O2 (internal compiler error) > FAIL: gfortran.dg/submodule_11.f08 -O2 (test for excess errors) > FAIL: gfortran.dg/submodule_11.f08 -O3 -fomit-frame-pointer -funroll-loops > -fpeel-loops -ftracer -finline-functions (internal compiler error) > FAIL: gfortran.dg/submodule_11.f08 -O3 -fomit-frame-pointer -funroll-loops > -fpeel-loops -ftracer -finline-functions (test for excess errors) > FAIL: gfortran.dg/submodule_11.f08 -O3 -g (internal compiler error) > FAIL: gfortran.dg/submodule_11.f08 -O3 -g (test for excess errors) > FAIL: gfortran.dg/submodule_11.f08 -Os (internal compiler error) > FAIL: gfortran.dg/submodule_11.f08 -Os (test for excess errors)
Well, if I change the order of the conditionals decl.c:4831, I can get rid of the above FAILs. Index: decl.c =================================================================== --- decl.c (revision 231219) +++ decl.c (working copy) @@ -4826,7 +4826,7 @@ ok: /* Abbreviated module procedure declaration is not meant to have any formal arguments! */ - if (!sym->abr_modproc_decl && formal && !head) + if (formal && !head && sym && !sym->abr_modproc_decl) arg_count_mismatch = true; for (p = formal, q = head; p && q; p = p->next, q = q->next) -- steve > FAIL: gfortran.dg/submodule_13.f08 -O (internal compiler error) > FAIL: gfortran.dg/submodule_13.f08 -O (test for errors, line 29) > FAIL: gfortran.dg/submodule_13.f08 -O (test for excess errors) > > Using valgrind on 'f951 submodule_10.f08' yields > > laptop-kargl:kargl[324] valgrind > ~/work/libexec/gcc/i386-unknown-freebsd11.0/6.0.0/f951 submodule_10.f08 > ==74201== Memcheck, a memory error detector > ==74201== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. > ==74201== Using Valgrind-3.10.0 and LibVEX; rerun with -h for copyright info > ==74201== Command: > /home/kargl/work/libexec/gcc/i386-unknown-freebsd11.0/6.0.0/f951 > submodule_10.f08 > ==74201== > ==74201== Use of uninitialised value of size 4 > ==74201== at 0x81DC20C: gfc_match_formal_arglist(gfc_symbol*, int, int) > (decl.c:4829) > ==74201== by 0x81DE6F7: gfc_match_subroutine() (decl.c:6016) > ==74201== by 0x8248FC0: decode_statement() (parse.c:378) > ==74201== by 0x8247844: next_free (parse.c:1076) > ==74201== by 0x8247844: next_statement() (parse.c:1310) > ==74201== by 0x8258ACC: parse_contained(int) (parse.c:5038) > ==74201== by 0x824870F: parse_module() (parse.c:5431) > ==74201== by 0x82467D4: gfc_parse_file() (parse.c:5729) > ==74201== by 0x82972E7: gfc_be_parse_file() (f95-lang.c:201) > ==74201== by 0x87E4787: compile_file() (toplev.c:464) > ==74201== by 0x87E43E4: do_compile (toplev.c:1951) > ==74201== by 0x87E43E4: toplev::main(int, char**) (toplev.c:2058) > ==74201== by 0x8FCC00D: main (main.c:39) > ==74201== > ==74201== Invalid read of size 1 > ==74201== at 0x81DC20C: gfc_match_formal_arglist(gfc_symbol*, int, int) > (decl.==74201== at 0x81DC20C: gfc_match_formal_arglist(gfc_symbol*, int, > int) (decl.c:4829) > ==74201== by 0x81DE6F7: gfc_match_subroutine() (decl.c:6016) > ==74201== by 0x8248FC0: decode_statement() (parse.c:378) > ==74201== by 0x8247844: next_free (parse.c:1076) > ==74201== by 0x8247844: next_statement() (parse.c:1310) > ==74201== by 0x8258ACC: parse_contained(int) (parse.c:5038) > ==74201== by 0x824870F: parse_module() (parse.c:5431) > ==74201== by 0x82467D4: gfc_parse_file() (parse.c:5729) > ==74201== by 0x82972E7: gfc_be_parse_file() (f95-lang.c:201) > ==74201== by 0x87E4787: compile_file() (toplev.c:464) > ==74201== by 0x87E43E4: do_compile (toplev.c:1951) > ==74201== by 0x87E43E4: toplev::main(int, char**) (toplev.c:2058) > ==74201== by 0x8FCC00D: main (main.c:39) > ==74201== Address 0x8094 is not stack'd, malloc'd or (recently) free'd > ==74201== > > > I suspect that we have a sym=NULL dereferenc someplace. > > -- > steve > > > On Mon, Nov 30, 2015 at 02:35:35PM +0100, Paul Richard Thomas wrote: > > Committed as revision 231072. > > > > Thanks for the review > > > > Paul > > > > On 28 November 2015 at 17:19, Steve Kargl > > <s...@troutmask.apl.washington.edu> wrote: > > > On Sat, Nov 28, 2015 at 11:35:54AM +0100, Paul Richard Thomas wrote: > > >> + > > >> + /* Abreviated module procedure declaration is not meant to have > > >> any > > > > > > s/Abreviated/Abbreviated > > > > > >> + formal arguments! */ > > >> + if (!sym->abr_modproc_decl && formal && !head) > > >> + arg_count_mismatch = true; > > >> + > > > > > > OK to commit. > > > > > > -- > > > Steve > > > > > > > > -- > > Outside of a dog, a book is a man's best friend. Inside of a dog it's > > too dark to read. > > > > Groucho Marx > > -- > Steve -- Steve