1. The ARM Darwin *r9 call instructions were pseudo-ized recently.
Modify the ARMDisassemblerCore.cpp file to accomodate the change.
2. The disassembler was unnecessarily adding 8 to the sign-extended imm24:
imm32 = SignExtend(imm24:'00', 32); // A8.6.23 BL, BLX (immediate)
// Encoding A1
It has no business doing such. Removed the offending logic.
Add test cases to arm-tests.txt.
llvm-svn: 127707
Find out that our C++0x status has only one field for noexcept expression and specification together, and that it was accidentally already marked as fully implemented.
This completes noexcept specification work.
llvm-svn: 127701
After live range splitting, an original value may be available in multiple
registers. Tracing back through the registers containing the same value, find
the best place to insert a spill, determine if the value has already been
spilled, or discover a reaching def that may be rematerialized.
This is only the analysis part. The information is not used for anything yet.
llvm-svn: 127698
declaration as this results in a confusing error message,
instead of message related to missing property declaration.
// rdar://9106929
llvm-svn: 127682
memory builtins as equivalent to malloc/free.
This is different from any attribute we have. For example, you can delete the
allocators when their result is unused, but you can't collapse two calls to the
same function, even if no global/memory state has changed in between. The
noalias return states that the result does not alias any other pointer, but
instcombine optimizes malloc() as though the result is non-null for the purpose
of eliminating unused pointers.
llvm-svn: 127673
v2 = bitcast v1
...
v3 = bitcast v2
...
= v3
=>
v2 = bitcast v1
...
= v1
if v1 and v3 are of in the same register class.
bitcast between i32 and fp (and others) are often not nops since they
are in different register classes. These bitcast instructions are often
left because they are in different basic blocks and cannot be
eliminated by dag combine.
rdar://9104514
llvm-svn: 127668
for templatized types that could cause parts of a std::vector (and I am sure
other STL types) to be incorrectly uniqued to each other wreaking havoc on
variable display for types within the same executable module.
llvm-svn: 127662
types that have different contents. Currently LLDB is incorrectly uniquing,
on MacOSX, the std::vector _VectorImpl class from the two different vector
templates. The DWARF looks like:
0x0000008e: DW_TAG_structure_type [7] *
DW_AT_name( "_Vector_base<int,std::allocator<int> >" )
DW_AT_declaration( 0x01 )
DW_AT_sibling( {0x00000103} )
0x00000098: DW_TAG_structure_type [8] *
DW_AT_name( "_Vector_impl" )
DW_AT_byte_size( 0x18 )
DW_AT_decl_file( "/usr/include/c++/4.2.1/bits/stl_vector.h" )
DW_AT_decl_line( 83 )
0x000000a0: DW_TAG_inheritance [9]
DW_AT_type( {0x000006fa} ( allocator<int> ) )
DW_AT_data_member_location( +0 )
DW_AT_accessibility( DW_ACCESS_public )
0x0000011b: DW_TAG_structure_type [7] *
DW_AT_name( "_Vector_base<short int,std::allocator<short int> >" )
DW_AT_declaration( 0x01 )
DW_AT_sibling( {0x00000190} )
0x00000125: DW_TAG_structure_type [8] *
DW_AT_name( "_Vector_impl" )
DW_AT_byte_size( 0x18 )
DW_AT_decl_file( "/usr/include/c++/4.2.1/bits/stl_vector.h" )
DW_AT_decl_line( 83 )
0x0000012d: DW_TAG_inheritance [9]
DW_AT_type( {0x00000f75} ( allocator<short int> ) )
DW_AT_data_member_location( +0 )
DW_AT_accessibility( DW_ACCESS_public )
In this case it using DIE 0x00000098 for both 0x00000098 and 0x00000125.
This test will help detect this issue once I have a fix for it. I have a fix
that I am testing.
llvm-svn: 127660