DWARF add DW_AT_noreturn on noreturn function subprogram.
authorMark Wielaard <mjw@redhat.com>
Wed, 26 Nov 2014 10:10:27 +0000 (10:10 +0000)
committerMark Wielaard <mark@gcc.gnu.org>
Wed, 26 Nov 2014 10:10:27 +0000 (10:10 +0000)
commit42bc3520017ef04b19bee9a6ae4fc35d55cd2537
tree0da2d62552111f8cf417b00f86b89e8a9353c9cb
parent7ec44c3d10c41dabcb64efc4b3225d5a1bb4d7f9
DWARF add DW_AT_noreturn on noreturn function subprogram.

This implements the DWARFv5 noreturn proposal:
http://dwarfstd.org/ShowIssue.php?issue=140331.1

TREE_THIS_VOLATILE on a FUNCTION_DECL node means the function does not
return normally. This catches the traditional noreturn GNU attribute,
the C11 _Noreturn keyword and the C++11 [[noreturn]] attribute.

This relies on the DW_AT_noreturn constant defined in the DWARFv5 DRAFT:
http://www.dwarfstd.org/doc/dwarf5.20141029.pdf

gcc/ChangeLog

* dwarf2out.c (gen_subprogram_die): Add DW_AT_noreturn when the
function decl has TREE_THIS_VOLATILE.

gcc/testsuite/ChangeLog

* g++.dg/debug/dwarf2/noreturn-function.C: New test.
* gcc.dg/debug/dwarf2/noreturn-function-attribute.c: Likewise.
* gcc.dg/debug/dwarf2/noreturn-function-keyword.c: Likewise.

include/ChangeLog

* dwarf2.def (DW_AT_noreturn): New DWARF5 attribute.

From-SVN: r218075
gcc/ChangeLog
gcc/dwarf2out.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/debug/dwarf2/noreturn-function.C [new file with mode: 0644]
gcc/testsuite/gcc.dg/debug/dwarf2/noreturn-function-attribute.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/debug/dwarf2/noreturn-function-keyword.c [new file with mode: 0644]
include/ChangeLog
include/dwarf2.def