* [testsuite] Adapt dg-function-on-line for IRIX
@ 2011-01-24 14:02 Rainer Orth
0 siblings, 0 replies; only message in thread
From: Rainer Orth @ 2011-01-24 14:02 UTC (permalink / raw)
To: gcc-patches; +Cc: Jeffrey Yasskin
Two g++.dg/debug/dwarf2 tests are currently failing on IRIX 6.5:
FAIL: g++.dg/debug/dwarf2/lineno-simple1.C scan-assembler main:[^\\\\t]*(\\\\t.(fnstart|frame|mask|file)[^\\\\t]*)*\\\\t[^:]+:12\\\\n
FAIL: g++.dg/debug/dwarf2/pr46527.C scan-assembler _ZN6StructIdE13defined_laterEv:[^\\\\t]*(\\\\t.(fnstart|frame|mask|file)[^\\\\t]*)*\\\\t[^:]+:12\\\\n
It turns out that the current implementation of dg-function-on-line is
the culprit: for the first failure, the code around the definition of
main looks like this:
# /vol/gcc/src/hg/trunk/irix/gcc/testsuite/g++.dg/debug/dwarf2/lineno-s
imple1.C:12
.loc 1 12 0
.set nomips16
.ent main
.type main, @function
main:
.frame $fp,16,$31 # vars= 0, regs= 1/0, args= 0, gp= 0
.mask 0x40000000,-8
.fmask 0x00000000,0
.set noreorder
.set nomacro
# basic block 2
addiu $sp,$sp,-16
.LCFI6 = .
sd $fp,8($sp)
.LCFI7 = .
move $fp,$sp
.LCFI8 = .
move $2,$0
.LCFI8 = .
move $2,$0
# /vol/gcc/src/hg/trunk/irix/gcc/testsuite/g++.dg/debug/dwarf2/lineno-s
imple1.C:13
The pattern used by dg-function-on-line for all but hppa*-*-* is
[format {%s:[^\t]*(\t.(fnstart|frame|mask|file)[^\t]*)*\t[^:]+:%d\n} \
$symbol $line]
Since Tcl regexp does multiline matches by default, if the line number
on the next # <filename>:<lineno> comment happens to the one we're
looking for, the match extends there. This is why several of the
dg-function-on-line tests still succeed. If it is not, the test fails.
What we really want to do is match the function declaration, which looks
like this:
.loc 1 12 0
.set nomips16
.ent main
.type main, @function
main:
.loc gets the fileno (which we don't care for), the lineno (what we're
interested in, 0 and perhaps further info we also don't care for (like
is_stmt 0 discriminator 1), either .set nomips16 or .set mips16, and the
function declaration itself.
The following IRIX-specific patch implements this. Tested with the
appropriate runtest invocations for the 3 testcases using
dg-function-on-line, committed to mainline.
Rainer
2011-01-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* lib/scanasm.exp (dg-function-on-line): Handle mips-sgi-irix*.
diff -r 3a08436b46b4 gcc/testsuite/lib/scanasm.exp
--- a/gcc/testsuite/lib/scanasm.exp Mon Jan 24 08:02:01 2011 +0000
+++ b/gcc/testsuite/lib/scanasm.exp Mon Jan 24 13:09:54 2011 +0100
@@ -1,4 +1,4 @@
-# Copyright (C) 2000, 2002, 2003, 2007, 2008, 2010
+# Copyright (C) 2000, 2002, 2003, 2007, 2008, 2010, 2011
# Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
@@ -342,6 +342,9 @@
if { [istarget "hppa*-*-*"] } {
set pattern [format {\t;[^:]+:%d\n(\t[^\t]+\n)+%s:\n\t.PROC} \
$line $symbol]
+ } elseif { [istarget "mips-sgi-irix*"] } {
+ set pattern [format {\t\.loc [0-9]+ %d 0( [^\n]*)?\n\t\.set\t(no)?mips16\n\t\.ent\t%s\n\t\.type\t%s, @function\n%s:\n} \
+ $line $symbol $symbol $symbol]
} else {
set pattern [format {%s:[^\t]*(\t.(fnstart|frame|mask|file)[^\t]*)*\t[^:]+:%d\n} \
$symbol $line]
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2011-01-24 12:13 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-01-24 14:02 [testsuite] Adapt dg-function-on-line for IRIX Rainer Orth
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).