diff options
| author | Chris Lattner <sabre@nondot.org> | 2002-12-04 23:45:28 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2002-12-04 23:45:28 +0000 |
| commit | 4859c65d48290ddb543f67aa143e7bc081de54d4 (patch) | |
| tree | bbfa14ba8340d201ad8ec4f08f0c4b68fc6fa966 /llvm/lib/Target | |
| parent | dbb7b65bf308e7f03da5973139a09b8130c976c0 (diff) | |
| download | bcm5719-llvm-4859c65d48290ddb543f67aa143e7bc081de54d4.tar.gz bcm5719-llvm-4859c65d48290ddb543f67aa143e7bc081de54d4.zip | |
Implement initial support for return values from call instructions
llvm-svn: 4924
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/X86/InstSelectSimple.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/InstSelectSimple.cpp b/llvm/lib/Target/X86/InstSelectSimple.cpp index 55bf65b2f58..2f701ed8d3d 100644 --- a/llvm/lib/Target/X86/InstSelectSimple.cpp +++ b/llvm/lib/Target/X86/InstSelectSimple.cpp @@ -430,6 +430,20 @@ ISel::visitCallInst (CallInst & CI) // Adjust the stack by `bytesPushed' amount if non-zero if (bytesPushed > 0) BuildMI (BB, X86::ADDri32, 2).addReg(X86::ESP).addZImm(bytesPushed); + + // If there is a return value, scavenge the result from the location the call + // leaves it in... + // + switch (getClass(CI.getType())) { + case cInt: + BuildMI(BB, X86::MOVrr32, 1, getReg(CI)).addReg(X86::EAX); + break; + + default: + std::cerr << "Cannot get return value for call of type '" + << *CI.getType() << "'\n"; + visitInstruction(CI); + } } /// visitSimpleBinary - Implement simple binary operators for integral types... |

