//===----------------------- FunctionPointer.cpp ----------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "FunctionPointer.h" namespace clang { namespace interp { APValue FunctionPointer::toAPValue(const ASTContext &) const { if (!Func) return APValue(static_cast(nullptr), CharUnits::Zero(), {}, /*OnePastTheEnd=*/false, /*IsNull=*/true); if (Func->getDecl()) return APValue(Func->getDecl(), CharUnits::fromQuantity(0), {}, /*OnePastTheEnd=*/false, /*IsNull=*/false); return APValue(Func->getExpr(), CharUnits::fromQuantity(0), {}, /*OnePastTheEnd=*/false, /*IsNull=*/false); } void FunctionPointer::print(llvm::raw_ostream &OS) const { OS << "FnPtr("; if (Func) OS << Func->getName(); else OS << "nullptr"; OS << ")"; } } // namespace interp } // namespace clang