aboutsummaryrefslogtreecommitdiff
path: root/lib/Target/CBackend/CBackend.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-02-14 02:55:36 +0000
committerChris Lattner <sabre@nondot.org>2004-02-14 02:55:36 +0000
commitfe1554a080cb820249eaf1777ab3236766f5e101 (patch)
tree7db115a3d462506a7fd080d5024056e9ea956ff7 /lib/Target/CBackend/CBackend.cpp
parent4a6f9a40b73d8ae0bd392911cd68c4c9689b442a (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.cpp12
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);