| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 14786
|
|
|
|
|
|
| |
code.
llvm-svn: 14785
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
"load (cast foo)". This allows us to compile C++ code like this:
class Bclass {
public: virtual int operator()() { return 666; }
};
class Dclass: public Bclass {
public: virtual int operator()() { return 667; }
} ;
int main(int argc, char** argv) {
Dclass x;
return x();
}
Into this:
int %main(int %argc, sbyte** %argv) {
entry:
call void %__main( )
ret int 667
}
Instead of this:
int %main(int %argc, sbyte** %argv) {
entry:
%x = alloca "struct.std::bad_typeid" ; <"struct.std::bad_typeid"*> [#uses=3]
call void %__main( )
%tmp.1.i.i = getelementptr "struct.std::bad_typeid"* %x, uint 0, uint 0, uint 0 ; <int (...)***> [#uses=1]
store int (...)** getelementptr ([3 x int (...)*]* %vtable for Bclass, int 0, long 2), int (...)*** %tmp.1.i.i
%tmp.3.i = getelementptr "struct.std::bad_typeid"* %x, int 0, uint 0, uint 0 ; <int (...)***> [#uses=1]
store int (...)** getelementptr ([3 x int (...)*]* %vtable for Dclass, int 0, long 2), int (...)*** %tmp.3.i
%tmp.5 = load int ("struct.std::bad_typeid"*)** cast (int (...)** getelementptr ([3 x int (...)*]* %vtable for Dclass, int 0, long 2) to int
("struct.std::bad_typeid"*)**) ; <int ("struct.std::bad_typeid"*)*> [#uses=1]
%tmp.6 = call int %tmp.5( "struct.std::bad_typeid"* %x ) ; <int> [#uses=1]
ret int %tmp.6
ret int 0
}
In order words, we now resolve the virtual function call.
llvm-svn: 14783
|
|
|
|
| |
llvm-svn: 14782
|
|
|
|
| |
llvm-svn: 14781
|
|
|
|
| |
llvm-svn: 14780
|
|
|
|
| |
llvm-svn: 14776
|
|
|
|
| |
llvm-svn: 14775
|
|
|
|
|
|
| |
Reid, this might matter to you :)
llvm-svn: 14774
|
|
|
|
| |
llvm-svn: 14767
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Remove tabs
- Standardize use of space around ( and ).
- Consolidate the ConstantPlaceHolder class
- Rename two methods to be more meaningful (ParseType, ParseTypes)
- Correct indentation of blocks
- Add documentation
- Convert input dependent asserts to error(...) so it throws instead.
Provide placeholder implementations of read_float and read_double that
still read in platform-specific endianess. When I figure out how to do
this without knowing the endianess of the platform, it will get implemented
correctly.
llvm-svn: 14765
|
|
|
|
|
|
|
| |
- Add read_float and read_double in preparation for a correct
implementation of bytecode floating point support.
llvm-svn: 14764
|
|
|
|
| |
llvm-svn: 14763
|
|
|
|
|
|
|
| |
point values. This will be fixed when I figure out how to do it correctly
without depending on knowing the endianess of a platform.
llvm-svn: 14762
|
|
|
|
| |
llvm-svn: 14761
|
|
|
|
|
|
| |
night
llvm-svn: 14760
|
|
|
|
| |
llvm-svn: 14759
|
|
|
|
|
|
| |
The shared command line options are now in a header that makes sense.
llvm-svn: 14757
|
|
|
|
|
|
| |
The shared command line options are now in a header that makes sense.
llvm-svn: 14756
|
|
|
|
| |
llvm-svn: 14755
|
|
|
|
|
|
|
|
| |
also gives the JIT the ability to dynamically load targets. e.g.
lli -load libparisc.so -march=parisc foo.bc
llvm-svn: 14750
|
|
|
|
|
|
| |
I told you this file wasn't useless :)
llvm-svn: 14749
|
|
|
|
| |
llvm-svn: 14747
|
|
|
|
| |
llvm-svn: 14745
|
|
|
|
| |
llvm-svn: 14744
|
|
|
|
|
|
| |
will grow in time.
llvm-svn: 14743
|
|
|
|
|
|
|
| |
is a bad idea. Make tools that want the option #include PluginSupport.h
explicitly.
llvm-svn: 14738
|
|
|
|
|
|
| |
Patch found and provided by Vladimir Merzliakov. Thanks Vladimir!
llvm-svn: 14732
|
|
|
|
|
|
| |
expanded size instead of the file size). Thanks Chris.
llvm-svn: 14731
|
|
|
|
|
|
|
|
|
|
| |
- get rid of PARSE_ERROR macro
- add error(std::string) function
- use error(std::string) for all errors
- make input dependent asserts call error(std::string) instead
- ensure asserts are only for logic bugs, not input discrepancies.
llvm-svn: 14729
|
|
|
|
|
|
|
|
|
| |
global type plane starts with a length and the TypeTyID value to identify
the type plane has having type definitions. This doesn't happen in 1.3
because the types are read from a known position in the file. However, the
TypeTyID must be read in (and ignored) if its a 1.2 bytecode file.
llvm-svn: 14728
|
|
|
|
| |
llvm-svn: 14726
|
|
|
|
| |
llvm-svn: 14725
|
|
|
|
| |
llvm-svn: 14724
|
|
|
|
|
|
|
|
|
|
|
|
| |
The large diff is because of indentation of a whole region
* Fix querying predecessor blocks in SelectPHINodes(), thanks to Brian (v8)
* Add support for external functions malloc() and free()
* Fix some code indentation
Remember, kids: It's not plagiarism if you "creatively borrow" from your
sources. It's called "research"!
llvm-svn: 14723
|
|
|
|
| |
llvm-svn: 14722
|
|
|
|
|
|
|
|
|
|
|
| |
* Fix spacing, grammar in comment
* Make code layout consistent
* Wrap code at 80 cols
* Delete spurious blank lines
No functional changes.
llvm-svn: 14721
|
|
|
|
| |
llvm-svn: 14720
|
|
|
|
| |
llvm-svn: 14719
|
|
|
|
| |
llvm-svn: 14708
|
|
|
|
| |
llvm-svn: 14707
|
|
|
|
| |
llvm-svn: 14706
|
|
|
|
| |
llvm-svn: 14703
|
|
|
|
|
|
| |
* Non-const FP values must be loaded into int regs (for vararg fns) via memory
llvm-svn: 14701
|
|
|
|
|
|
| |
* Load FP values into int regs as well for vararg functions; without memory ops!
llvm-svn: 14700
|
|
|
|
|
|
| |
* Add suport for printing out references to constant pool indices
llvm-svn: 14699
|
|
|
|
| |
llvm-svn: 14695
|
|
|
|
| |
llvm-svn: 14687
|
|
|
|
|
|
|
| |
until the next cycle, and there's no interlock, so they effectively
have a delay slot.
llvm-svn: 14686
|
|
|
|
| |
llvm-svn: 14685
|