Add support for the returnaddress and frameaddress intrinsics
authorChris Lattner <sabre@nondot.org>
Sat, 14 Feb 2004 02:55:36 +0000 (02:55 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 14 Feb 2004 02:55:36 +0000 (02:55 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11433 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/CBackend/CBackend.cpp
lib/Target/CBackend/Writer.cpp

index 493e7ec5fcc13051bbb0c17c1954fe1419ad7999..74ed208f078072c38c88b086c4e857976e63edfc 100644 (file)
@@ -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);
index 493e7ec5fcc13051bbb0c17c1954fe1419ad7999..74ed208f078072c38c88b086c4e857976e63edfc 100644 (file)
@@ -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);