diff options
author | Chris Lattner <sabre@nondot.org> | 2004-02-14 02:55:36 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-02-14 02:55:36 +0000 |
commit | fe1554a080cb820249eaf1777ab3236766f5e101 (patch) | |
tree | 7db115a3d462506a7fd080d5024056e9ea956ff7 /lib/Target/CBackend/CBackend.cpp | |
parent | 4a6f9a40b73d8ae0bd392911cd68c4c9689b442a (diff) |
Add support for the returnaddress and frameaddress intrinsics
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11433 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/CBackend/CBackend.cpp')
-rw-r--r-- | lib/Target/CBackend/CBackend.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/Target/CBackend/CBackend.cpp b/lib/Target/CBackend/CBackend.cpp index 493e7ec5fc..74ed208f07 100644 --- a/lib/Target/CBackend/CBackend.cpp +++ b/lib/Target/CBackend/CBackend.cpp @@ -1157,6 +1157,8 @@ void CWriter::lowerIntrinsics(Module &M) { case Intrinsic::va_start: case Intrinsic::va_copy: case Intrinsic::va_end: + case Intrinsic::returnaddress: + case Intrinsic::frameaddress: // We directly implement these intrinsics break; default: @@ -1205,6 +1207,16 @@ void CWriter::visitCallInst(CallInst &I) { writeOperand(I.getOperand(1)); Out << ")"; return; + case Intrinsic::returnaddress: + Out << "__builtin_return_address("; + writeOperand(I.getOperand(1)); + Out << ")"; + return; + case Intrinsic::frameaddress: + Out << "__builtin_frame_address("; + writeOperand(I.getOperand(1)); + Out << ")"; + return; } } visitCallSite(&I); |