LLVM backend for 6502
Go to file
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
autoconf Reapply majority of r55557 but with the changes to compilation flags 2008-09-02 17:35:16 +00:00
bindings PR2731: C and Ocaml bindings for setTailCall and isTailCall. 2008-08-30 16:34:54 +00:00
cmake CMake: Removed unnecessary messages from msvc_llvm_config macro. 2008-09-24 01:54:03 +00:00
docs Accept 'inreg' attribute on x86 functions as 2008-09-25 20:47:45 +00:00
examples Initial support for the CMake build system. 2008-09-22 01:08:49 +00:00
include If we have a function with an unreachable statement such that the ending debug 2008-09-26 00:28:12 +00:00
lib If we have a function with an unreachable statement such that the ending debug 2008-09-26 00:28:12 +00:00
projects Add "sample" documentation to sample project. 2008-09-15 05:31:29 +00:00
runtime Fixing the stack walker. 2008-01-24 05:16:36 +00:00
test Prefer movlhps over punpcklqdq, etc. in more cases. 2008-09-25 23:35:16 +00:00
tools CMake: Lists of source files updated. Removed bogus dependency from 2008-09-24 01:58:12 +00:00
utils Large mechanical patch. 2008-09-25 21:00:45 +00:00
website
win32 Add Attributes.cpp to the vcproj. 2008-09-24 17:23:28 +00:00
Xcode Merge LLVMBuilder and FoldingBuilder, calling 2008-04-13 06:22:09 +00:00
build-for-llvm-top.sh
CMakeLists.txt CMake: Disabled some warnings for MSVC. 2008-09-24 19:27:54 +00:00
configure Enable -fvisibility-inlines-hidden by default for compilers which 2008-08-30 01:16:19 +00:00
CREDITS.TXT Add another description to my entry. 2008-08-28 23:16:37 +00:00
LICENSE.TXT llvmc doesn't exist anymore, and llvmc2 doesn't have a special license file. 2008-06-20 20:05:57 +00:00
llvm.spec.in
Makefile For PR1338: rename include/llvm/ADT/ilist and friends to end with ".h" 2008-05-29 17:41:17 +00:00
Makefile.common remove attributions from the rest of the llvm makefiles. 2007-12-29 20:11:13 +00:00
Makefile.config.in Reapply majority of r55557 but with the changes to compilation flags 2008-09-02 17:35:16 +00:00
Makefile.rules Reapply majority of r55557 but with the changes to compilation flags 2008-09-02 17:35:16 +00:00
ModuleInfo.txt
README.txt Remove extra lines 2008-07-28 20:50:25 +00:00

Low Level Virtual Machine (LLVM)
================================

This directory and its subdirectories contain source code for the Low Level 
Virtual Machine, a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments. 

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the HTML documentation provided in docs/index.html for further
assistance with LLVM.