This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/50055] New: [PATCH] Location information for the throw() specification in a function may be incorrect
- From: "siddhesh.poyarekar at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 12 Aug 2011 11:54:03 +0000
- Subject: [Bug c++/50055] New: [PATCH] Location information for the throw() specification in a function may be incorrect
- Auto-submitted: auto-generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50055
Bug #: 50055
Summary: [PATCH] Location information for the throw()
specification in a function may be incorrect
Classification: Unclassified
Product: gcc
Version: 4.6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: siddhesh.poyarekar@gmail.com
Created attachment 24990
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=24990
Write EH_SPEC_BLOCK to the same line as its function
Problem Description:
The line number information for throw() exception specifier should be the same
as the function it is written against. For the following program:
struct mtcClass {
mtcClass() throw(int)
{
throw(1);
}
};
int main()
{
try
{
mtcClass mtc;
}
catch(...)
{
return 42;
}
}
gcov returns the following output after execution:
-: 0:Source:mtc_bad.cpp
-: 0:Graph:mtc_bad.gcno
-: 0:Data:mtc_bad.gcda
-: 0:Runs:1
-: 0:Programs:1
-: 1:struct mtcClass {
1: 2: mtcClass() throw(int)
#####: 3: {
1: 4: throw(1);
-: 5: }
-: 6:};
-: 7:
1: 8:int main()
-: 9:{
-: 10: try {
1: 11: mtcClass mtc;
-: 12: }
2: 13: catch( ...) {
1: 14: return 42;
-: 15: }
#####: 16:}
This happens during parsing where the EH_SPEC_BLOCK is written out with line
number as the one after the function decl. Attached patch modifies code to
write out the code for the throw() specification with the same line number as
the function.