llvm-6502/lib
Bill Wendling d751c64a67 If we have a function with an unreachable statement such that the ending debug
information is in an unreachable block, then it's possible that the high/low pc
values won't be set for the dwarf information. E.g., this function:

void abort(void) __attribute__((__noreturn__));
void dead_beef(void) __attribute__ ((noreturn));

int *b;

void dead_beef(void) {
  *b=0xdeadbeef;
  abort();
}

has a call to "@llvm.dbg.region.end" only in the unreachable block:

define void @dead_beef() noreturn nounwind  {
entry:
	call void @llvm.dbg.func.start(...)
	call void @llvm.dbg.stoppoint(...)
...
	call void @abort( ) noreturn nounwind 
	unreachable

return:		; No predecessors!
	call void @llvm.dbg.stoppoint(...)
	call void @llvm.dbg.region.end(...)
	ret void
}

The dwarf information emitted is something like:

0x00000084:     TAG_subprogram [5]  
                 AT_name( "dead_beef" )
                 AT_external( 0x01 )
                 AT_prototyped( 0x01 )
                 AT_decl_file( 0x01 )
                 AT_decl_line( 0x08 )

Note that this is *not* the best fix for this problem, but a band-aid for an
gaping wound. This code needs to be changed when we revamp our debugging
information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56628 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-26 00:28:12 +00:00
..
Analysis s/ParameterAttributes/Attributes/g 2008-09-23 23:03:40 +00:00
Archive Initial support for the CMake build system. 2008-09-22 01:08:49 +00:00
AsmParser Large mechanical patch. 2008-09-25 21:00:45 +00:00
Bitcode Large mechanical patch. 2008-09-25 21:00:45 +00:00
CodeGen If we have a function with an unreachable statement such that the ending debug 2008-09-26 00:28:12 +00:00
Debugger Initial support for the CMake build system. 2008-09-22 01:08:49 +00:00
ExecutionEngine Large mechanical patch. 2008-09-25 21:00:45 +00:00
Linker Initial support for the CMake build system. 2008-09-22 01:08:49 +00:00
Support Initial support for the CMake build system. 2008-09-22 01:08:49 +00:00
System Initial support for the CMake build system. 2008-09-22 01:08:49 +00:00
Target If we have a function with an unreachable statement such that the ending debug 2008-09-26 00:28:12 +00:00
Transforms Large mechanical patch. 2008-09-25 21:00:45 +00:00
VMCore Make pointer parameter const for isUsedInBasicBlock. 2008-09-25 22:42:01 +00:00
Makefile remove attribution from lib Makefiles. 2007-12-29 20:09:26 +00:00