https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66461

Joost VandeVondele <Joost.VandeVondele at mat dot ethz.ch> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |Joost.VandeVondele at mat dot 
ethz
                   |                            |.ch

--- Comment #7 from Joost VandeVondele <Joost.VandeVondele at mat dot ethz.ch> 
---
(In reply to Jerry DeLisle from comment #6)
> Hiesenbug. Steves fix, probably on BSD, does not work on linux. Some of my
> attempts work when running within the debugger, but do not work outside the
> debugger. I have traced through the scanner with and without the END
> statement and see nothing yet.
> 
> We might try a regression hunt to see where it broke to get a hint. One
> thing I have not checked yet is in fixed form we skip past the first
> characters of each line.  We may need to trap an EOF when we are doing that
> skipping.

This might be obvious, but valgrind might give a hint ? :

-linux-gnu/6.0.0/finclude -o /tmp/ccyEi6l3.s
==20860== 
==20860== Invalid read of size 4
==20860==    at 0x5DF7C1: free_expr0(gfc_expr*) (expr.c:431)
==20860==    by 0x5DF9BD: gfc_free_expr(gfc_expr*) (expr.c:513)
==20860==    by 0x60FE57: gfc_match_if(gfc_statement*) (match.c:1441)
==20860==    by 0x62BF91: decode_statement (parse.c:398)
==20860==    by 0x62BF91: decode_statement() (parse.c:293)
==20860==    by 0x62D434: next_free (parse.c:1076)
==20860==    by 0x62D434: next_statement() (parse.c:1310)
==20860==    by 0x62F4D4: parse_executable(gfc_statement) (parse.c:4792)
==20860==    by 0x630311: parse_progunit(gfc_statement) (parse.c:5215)
==20860==    by 0x6316C0: gfc_parse_file() (parse.c:5698)
==20860==    by 0x6745A2: gfc_be_parse_file() (f95-lang.c:201)
==20860==    by 0xB64FD2: compile_file() (toplev.c:464)
==20860==    by 0xB6706B: do_compile (toplev.c:1985)
==20860==    by 0xB6706B: toplev::main(int, char**) (toplev.c:2092)
==20860==    by 0x1354346: main (main.c:39)
==20860==  Address 0x4dc1b50 is 0 bytes inside a block of size 192 free'd
==20860==    at 0x4A06D9B: free (vg_replace_malloc.c:530)
==20860==    by 0x60FE12: gfc_match_if(gfc_statement*) (match.c:1425)
==20860==    by 0x62BF91: decode_statement (parse.c:398)
==20860==    by 0x62BF91: decode_statement() (parse.c:293)
==20860==    by 0x62D434: next_free (parse.c:1076)
==20860==    by 0x62D434: next_statement() (parse.c:1310)
==20860==    by 0x62F4D4: parse_executable(gfc_statement) (parse.c:4792)
==20860==    by 0x630311: parse_progunit(gfc_statement) (parse.c:5215)
==20860==    by 0x6316C0: gfc_parse_file() (parse.c:5698)
==20860==    by 0x6745A2: gfc_be_parse_file() (f95-lang.c:201)
==20860==    by 0xB64FD2: compile_file() (toplev.c:464)
==20860==    by 0xB6706B: do_compile (toplev.c:1985)
==20860==    by 0xB6706B: toplev::main(int, char**) (toplev.c:2092)
==20860==    by 0x1354346: main (main.c:39)
==20860==  Block was alloc'd at
==20860==    at 0x4A07B05: calloc (vg_replace_malloc.c:711)
==20860==    by 0x13C2368: xcalloc (xmalloc.c:163)
==20860==    by 0x5DF29F: gfc_get_expr() (expr.c:48)
==20860==    by 0x5DF397: gfc_get_operator_expr(locus*, gfc_intrinsic_op,
gfc_expr*, gfc_expr*) (expr.c:106)
==20860==    by 0x5B1090: eval_intrinsic(gfc_intrinsic_op, eval_f, gfc_expr*,
gfc_expr*) (arith.c:1611)
==20860==    by 0x5B1440: eval_intrinsic_f3 (arith.c:1725)
==20860==    by 0x5B1440: eval_intrinsic_f3(gfc_intrinsic_op, arith
(*)(gfc_expr*, gfc_expr*, gfc_expr**), gfc_expr*, gfc_expr*) (arith.c:1713)
==20860==    by 0x6131B2: match_equiv_operand(gfc_expr**) (matchexp.c:784)
==20860==    by 0x613276: match_level_5(gfc_expr**) (matchexp.c:811)
==20860==    by 0x612572: gfc_match_expr(gfc_expr**) (matchexp.c:870)
==20860==    by 0x60B870: gfc_match(char const*, ...) (match.c:1015)
==20860==    by 0x60FCC7: gfc_match_if(gfc_statement*) (match.c:1347)
==20860==    by 0x62BF91: decode_statement (parse.c:398)
==20860==    by 0x62BF91: decode_statement() (parse.c:293)

Reply via email to