diff options
| author | Chris Lattner <sabre@nondot.org> | 2003-06-06 04:00:05 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2003-06-06 04:00:05 +0000 |
| commit | 65d29b87e3ba27454c8a360b3698c446c23b5d7b (patch) | |
| tree | 19f5a333857e84fe62f6b2d30f1a76476a1ed143 /llvm/lib | |
| parent | 905ffcb78055466e1d9bbb9817e7b5fd97310d99 (diff) | |
| download | bcm5719-llvm-65d29b87e3ba27454c8a360b3698c446c23b5d7b.tar.gz bcm5719-llvm-65d29b87e3ba27454c8a360b3698c446c23b5d7b.zip | |
Add statistic for # machine instrs emitted
Add GROSS HACK to get CompilationCallback to work when compiled in release mode
llvm-svn: 6646
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/X86/X86CodeEmitter.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/X86CodeEmitter.cpp b/llvm/lib/Target/X86/X86CodeEmitter.cpp index f41300daeac..687cbc731ed 100644 --- a/llvm/lib/Target/X86/X86CodeEmitter.cpp +++ b/llvm/lib/Target/X86/X86CodeEmitter.cpp @@ -12,8 +12,12 @@ #include "llvm/CodeGen/MachineFunctionPass.h" #include "llvm/CodeGen/MachineInstr.h" #include "llvm/Value.h" +#include "Support/Statistic.h" namespace { + Statistic<> + NumEmitted("x86-emitter", "Number of machine instructions emitted"); + class JITResolver { MachineCodeEmitter &MCE; @@ -71,11 +75,17 @@ unsigned JITResolver::getLazyResolver(Function *F) { void JITResolver::CompilationCallback() { unsigned *StackPtr = (unsigned*)__builtin_frame_address(0); unsigned RetAddr = (unsigned)(intptr_t)__builtin_return_address(0); - assert(StackPtr[1] == RetAddr && "Could not find return address on the stack!"); bool isStub = ((unsigned char*)RetAddr)[0] == 0xCD; // Interrupt marker? + // FIXME FIXME FIXME FIXME: __builtin_frame_address doesn't work if frame + // pointer elimination has been performed. Having a variable sized alloca + // disables frame pointer elimination currently, even if it's dead. This is a + // gross hack. + alloca(10+isStub); + // FIXME FIXME FIXME FIXME + // The call instruction should have pushed the return value onto the stack... RetAddr -= 4; // Backtrack to the reference itself... @@ -429,6 +439,8 @@ static unsigned sizeOfPtr(const TargetInstrDescriptor &Desc) { } void Emitter::emitInstruction(MachineInstr &MI) { + NumEmitted++; // Keep track of the # of mi's emitted + unsigned Opcode = MI.getOpcode(); const TargetInstrDescriptor &Desc = II->get(Opcode); |

