diff options
Diffstat (limited to 'llvm/lib/Target/CBackend')
| -rw-r--r-- | llvm/lib/Target/CBackend/Writer.cpp | 12 | 
1 files changed, 12 insertions, 0 deletions
diff --git a/llvm/lib/Target/CBackend/Writer.cpp b/llvm/lib/Target/CBackend/Writer.cpp index 493e7ec5fcc..74ed208f078 100644 --- a/llvm/lib/Target/CBackend/Writer.cpp +++ b/llvm/lib/Target/CBackend/Writer.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);  | 

