Commit 63841daf by Matthew Malcomson Committed by Matthew Malcomson

[mid-end][__RTL] Account for column numbers in __RTL functions


The documentation for __RTL tests (see "(gccint) RTL Tests" info node) has the
following snippet.

```
 The parser expects the RTL body to be in the format emitted by this
dumping function:

     DEBUG_FUNCTION void
     print_rtx_function (FILE *outfile, function *fn, bool compact);

 when "compact" is true.  So you can capture RTL in the correct format
from the debugger using:

     (gdb) print_rtx_function (stderr, cfun, true);

 and copy and paste the output into the body of the C function.
```

Since r264944 print_rtx_function prints column number information, which the
__RTL function parsing does not handle.

This patch handles column number information optionally, so pre-existing __RTL
functions still work, and the above documentation quote still holds.

Note: If people would prefer to require column information I could make a
slightly neater code and update existing tests.
I guess this would be OK since the intended use for __RTL functions is in these
testcases so there is no worry about other existing code.

bootstrapped and regtested on aarch64
bootstrapped and regtested on x86_64

Ok for trunk?

Cheers,
Matthew

gcc/ChangeLog:

2019-11-15  Matthew Malcomson  <matthew.malcomson@arm.com>

	* read-rtl-function.c
	(function_reader::add_fixup_source_location): Take additional
	parameter of a column.
	(function_reader::maybe_read_location): Optionally parse column
	information and pass to add_fixup_source_location.

gcc/testsuite/ChangeLog:

2019-11-15  Matthew Malcomson  <matthew.malcomson@arm.com>

	* gcc.dg/rtl/aarch64/rtl-handle-column-numbers.c: New test.

From-SVN: r278294
parent b9f71c51
2019-11-15 Matthew Malcomson <matthew.malcomson@arm.com>
* read-rtl-function.c
(function_reader::add_fixup_source_location): Take additional
parameter of a column.
(function_reader::maybe_read_location): Optionally parse column
information and pass to add_fixup_source_location.
2019-11-15 Richard Biener <rguenther@suse.de>
PR tree-optimization/92512
......@@ -115,7 +115,7 @@ class function_reader : public rtx_reader
int operand_idx, int bb_idx);
void add_fixup_source_location (file_location loc, rtx_insn *insn,
const char *filename, int lineno);
const char *filename, int lineno, int colno);
void add_fixup_expr (file_location loc, rtx x,
const char *desc);
......@@ -1371,7 +1371,7 @@ function_reader::add_fixup_note_insn_basic_block (file_location loc, rtx insn,
void
function_reader::add_fixup_source_location (file_location, rtx_insn *,
const char *, int)
const char *, int, int)
{
}
......@@ -1557,7 +1557,20 @@ function_reader::maybe_read_location (rtx_insn *insn)
require_char (':');
struct md_name line_num;
read_name (&line_num);
add_fixup_source_location (loc, insn, filename, atoi (line_num.string));
int column = 0;
int ch = read_char ();
if (ch == ':')
{
struct md_name column_num;
read_name (&column_num);
column = atoi (column_num.string);
}
else
unread_char (ch);
add_fixup_source_location (loc, insn, filename,
atoi (line_num.string),
column);
}
else
unread_char (ch);
......
2019-11-15 Matthew Malcomson <matthew.malcomson@arm.com>
* gcc.dg/rtl/aarch64/rtl-handle-column-numbers.c: New test.
2019-11-15 Richard Biener <rguenther@suse.de>
PR tree-optimization/92512
......
/* { dg-do compile { target aarch64-*-* } } */
/* Should compile and not complain. */
int __RTL (startwith ("cprop_hardreg"))
foo ()
{
(function "f"
(insn-chain
(block 2
(edge-from entry (flags "FALLTHRU"))
(cnote 6 [bb 2] NOTE_INSN_BASIC_BLOCK)
(cinsn 100 (set (reg:DI x0)
(plus:DI
(reg:DI x1)
(const_int 16777213)))
"/home/user/somefile.c":10:3)
;; Extra insn, to avoid all of the above from being deleted by DCE
(cinsn 10 (use (reg/i:DI x0)))
(edge-to exit (flags "FALLTHRU"))
) ;; block 2
) ;; insn-chain
) ;; function
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment