@@ -597,6 +597,14 @@ Function *AArch64Arm64ECCallLowering::buildEntryThunk(Function *F) {
597597 return Thunk;
598598}
599599
600+ std::optional<std::string> getArm64ECMangledFunctionName (GlobalValue &GV) {
601+ if (!GV.hasName ()) {
602+ GV.setName (" __unnamed" );
603+ }
604+
605+ return llvm::getArm64ECMangledFunctionName (GV.getName ());
606+ }
607+
600608// Builds the "guest exit thunk", a helper to call a function which may or may
601609// not be an exit thunk. (We optimistically assume non-dllimport function
602610// declarations refer to functions defined in AArch64 code; if the linker
@@ -608,7 +616,7 @@ Function *AArch64Arm64ECCallLowering::buildGuestExitThunk(Function *F) {
608616 getThunkType (F->getFunctionType (), F->getAttributes (),
609617 Arm64ECThunkType::GuestExit, NullThunkName, Arm64Ty, X64Ty,
610618 ArgTranslations);
611- auto MangledName = getArm64ECMangledFunctionName (F-> getName (). str () );
619+ auto MangledName = getArm64ECMangledFunctionName (*F );
612620 assert (MangledName && " Can't guest exit to function that's already native" );
613621 std::string ThunkName = *MangledName;
614622 if (ThunkName[0 ] == ' ?' && ThunkName.find (" @" ) != std::string::npos) {
@@ -790,7 +798,7 @@ bool AArch64Arm64ECCallLowering::runOnModule(Module &Mod) {
790798 if (!F)
791799 continue ;
792800 if (std::optional<std::string> MangledName =
793- getArm64ECMangledFunctionName (A. getName (). str () )) {
801+ getArm64ECMangledFunctionName (A)) {
794802 F->addMetadata (" arm64ec_unmangled_name" ,
795803 *MDNode::get (M->getContext (),
796804 MDString::get (M->getContext (), A.getName ())));
@@ -807,7 +815,7 @@ bool AArch64Arm64ECCallLowering::runOnModule(Module &Mod) {
807815 cast<GlobalValue>(F.getPersonalityFn ()->stripPointerCasts ());
808816 if (PersFn->getValueType () && PersFn->getValueType ()->isFunctionTy ()) {
809817 if (std::optional<std::string> MangledName =
810- getArm64ECMangledFunctionName (PersFn-> getName (). str () )) {
818+ getArm64ECMangledFunctionName (* PersFn)) {
811819 PersFn->setName (MangledName.value ());
812820 }
813821 }
@@ -821,7 +829,7 @@ bool AArch64Arm64ECCallLowering::runOnModule(Module &Mod) {
821829 // Rename hybrid patchable functions and change callers to use a global
822830 // alias instead.
823831 if (std::optional<std::string> MangledName =
824- getArm64ECMangledFunctionName (F. getName (). str () )) {
832+ getArm64ECMangledFunctionName (F)) {
825833 std::string OrigName (F.getName ());
826834 F.setName (MangledName.value () + HybridPatchableTargetSuffix);
827835
@@ -926,7 +934,7 @@ bool AArch64Arm64ECCallLowering::processFunction(
926934 // FIXME: Handle functions with weak linkage?
927935 if (!F.hasLocalLinkage () || F.hasAddressTaken ()) {
928936 if (std::optional<std::string> MangledName =
929- getArm64ECMangledFunctionName (F. getName (). str () )) {
937+ getArm64ECMangledFunctionName (F)) {
930938 F.addMetadata (" arm64ec_unmangled_name" ,
931939 *MDNode::get (M->getContext (),
932940 MDString::get (M->getContext (), F.getName ())));
0 commit comments