Bug 13702 - When preprocessing Fortran files (.F, .F90 and .F95) cpp should emit line numbers.
Summary: When preprocessing Fortran files (.F, .F90 and .F95) cpp should emit line num...
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: fortran (show other bugs)
Version: tree-ssa
: P2 normal
Target Milestone: 4.0.0
Assignee: Not yet assigned to anyone
URL:
Keywords: patch, rejects-valid
Depends on:
Blocks:
 
Reported: 2004-01-15 19:08 UTC by Toon Moene
Modified: 2004-06-16 13:51 UTC (History)
2 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2004-04-04 23:54:49


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Toon Moene 2004-01-15 19:08:57 UTC
Currently, when preprocessing Fortran files, gfortran calls cpp with the -P
option, which prevents it to emit line number information.

The reason for this is that, at the moment, the Fortran front end cannot process
these directives.

However, for debugging purposes it's paramount that this infomation is emitted
by cpp and interpreted by the Fortran front end; without it, line numbers in
debugging records will refer to the lines in the preprocessed source, not the
original.
Comment 1 Andrew Pinski 2004-01-15 19:11:08 UTC
Confirmed.
Comment 2 Tobias Schlüter 2004-04-30 12:38:28 UTC
I have a patch for this, ported from Andy's tree. Waiting for my copyright
assignment.
Comment 3 Tobias Schlüter 2004-05-11 17:37:28 UTC
Patch here: http://gcc.gnu.org/ml/fortran/2004-05/msg00106.html
Comment 4 GCC Commits 2004-05-15 17:31:35 UTC
Subject: Bug 13702

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	tobi@gcc.gnu.org	2004-05-15 17:31:32

Modified files:
	gcc/fortran    : ChangeLog error.c gfortran.h lang-specs.h 
	                 match.c module.c parse.c scanner.c trans-decl.c 
	                 trans-io.c trans.c 

Log message:
	PR fortran/13702
	(Port from g95)
	* gfortran.h (gfc_linebuf): New typedef.
	(linebuf): Remove.
	(gfc_file): Revamped, use new gfc_linebuf.
	(locus): Revamped, use new types.
	(gfc_current_file): Remove.
	(gfc_current_form, gfc_source_file): New global variables.
	* match.c (gfc_match_space, gfc_match_strings): Use
	gfc_current_form to find source form.
	* module.c (gfc_dump_module): Use gfc_source_file when printing
	module header.
	* error.c (show_locus, show_loci) Use new data structures to print
	locus.
	* scanner.c (first_file, first_duplicated_file, gfc_current_file):
	Remove.
	(file_head, current_file, gfc_current_form, line_head, line_tail,
	gfc_current_locus1, gfc_source_file): New global variables.
	(gfc_scanner_init1): Set new global variables.
	(gfc_scanner_done1): Free new data structures.
	(gfc_current_locus): Return pointer to gfc_current_locus1.
	(gfc_set_locus): Set gfc_current_locus1.
	(gfc_at_eof): Set new variables.
	(gfc_at_bol, gfc_at_eol, gfc_advance_line, gfc_next_char): Adapt
	to new locus structure.
	(gfc_check_include): Remove.
	(skip_free_comments, skip_fixed_comments): Use gfc_current_locus1.
	(gfc_skip_comments): Use gfc_current_form, find locus with
	gfc_current_locus1.
	(gfc_next_char): Use gfc_current_form.
	(gfc_peek_char, gfc_gobble_whitespace): Use gfc_current_locus1.
	(load_line): Use gfc_current_form. Recognize ^Z as EOF. Fix
	comment formatting.
	(get_file): New function.
	(preprocessor_line, include_line): New functions.
	(load_file): Move down, rewrite to match new data structures.
	(gfc_new_file): Rewrite to match new data structures.
	* parse.c (next_statement): Remove code which is now useless. Use
	gfc_source_form and gfc_source_file where appropriate.
	* trans-decl.c (gfc_get_label_decl): adapt to new data structures
	when determining locus of frontend code.
	* trans-io.c (set_error_locus): Same.
	* trans.c (gfc_get_backend_locus, gfc_set_backend_locus): Likewise.
	* lang-specs.h (@f77-cpp-input, @f95-cpp-input): Remove '-P' from
	preprocessor flags.
	(all): Add missing initializers.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/ChangeLog.diff?cvsroot=gcc&r1=1.16&r2=1.17
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/error.c.diff?cvsroot=gcc&r1=1.3&r2=1.4
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/gfortran.h.diff?cvsroot=gcc&r1=1.3&r2=1.4
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/lang-specs.h.diff?cvsroot=gcc&r1=1.3&r2=1.4
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/match.c.diff?cvsroot=gcc&r1=1.5&r2=1.6
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/module.c.diff?cvsroot=gcc&r1=1.3&r2=1.4
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/parse.c.diff?cvsroot=gcc&r1=1.5&r2=1.6
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/scanner.c.diff?cvsroot=gcc&r1=1.3&r2=1.4
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/trans-decl.c.diff?cvsroot=gcc&r1=1.5&r2=1.6
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/trans-io.c.diff?cvsroot=gcc&r1=1.4&r2=1.5
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/trans.c.diff?cvsroot=gcc&r1=1.4&r2=1.5

Comment 5 Tobias Schlüter 2004-05-16 19:04:00 UTC
Fixed by the above commit.