From 864ec3992f28e4e11b80087a3e63f4fc5fd5c913 Mon Sep 17 00:00:00 2001 From: Lucas Date: Tue, 16 Jul 2024 15:00:12 -0300 Subject: [PATCH] Set always external linkage --- llvm/lib/Target/SBF/SBFRegisterInfo.cpp | 40 +++++++------------------ 1 file changed, 10 insertions(+), 30 deletions(-) diff --git a/llvm/lib/Target/SBF/SBFRegisterInfo.cpp b/llvm/lib/Target/SBF/SBFRegisterInfo.cpp index f27834c6d0d90e4..7eff3443e92108c 100644 --- a/llvm/lib/Target/SBF/SBFRegisterInfo.cpp +++ b/llvm/lib/Target/SBF/SBFRegisterInfo.cpp @@ -57,25 +57,7 @@ static void WarnSize(int Offset, MachineFunction &MF, DebugLoc& DL) if (MF.getSubtarget().isSolana()) { Function &OffendingFunction = MF.getFunction(); - std::string MessageType; - std::string MessageExtra; - std::string NewName; - switch (OffendingFunction.getLinkage()) { - case GlobalValue::LinkageTypes::InternalLinkage: - case GlobalValue::LinkageTypes::PrivateLinkage: - MessageType = "Error:"; - MessageExtra = - "The program is very likely to misbehave during execution " - "with unexpected consequences."; - break; - default: - MessageType = "Warning:"; - MessageExtra = "The program may misbehave during execution."; - NewName = OffendingFunction.getName().str() + "::stack_overflow"; - break; - } - - dbgs() << MessageType; + dbgs() << "Warning: "; if (DL) { dbgs() << " "; DL.print(dbgs()); @@ -86,11 +68,12 @@ static void WarnSize(int Offset, MachineFunction &MF, DebugLoc& DL) << -MaxOffset << " by " << MaxOffset - Offset << " bytes, please minimize large stack variables. " << "Estimated function frame size: " << StackSize << " bytes. " - << MessageExtra << "\n\n"; + << "The program may misbehave during execution." + << "\n\n"; - if (!NewName.empty()) { - OffendingFunction.setName(NewName); - } + OffendingFunction.setName(OffendingFunction.getName() + + "::stack_overflow"); + OffendingFunction.setLinkage(GlobalValue::LinkageTypes::ExternalLinkage); } else { DiagnosticInfoUnsupported DiagStackSize( MF.getFunction(), @@ -187,17 +170,14 @@ int SBFRegisterInfo::resolveInternalFrameIndex( Offset = SBFRegisterInfo::FrameLength - Offset; if (static_cast(Offset) < MFI.getStackSize()) { Function &OffendingFunction = MF.getFunction(); - dbgs() << "Error: A function call in method " + dbgs() << "Warning: A function call in method " << OffendingFunction.getName() << " overwrites values in the frame. Please, decrease stack usage " << "or remove parameters from the call.\n\n"; - GlobalValue::LinkageTypes LinkageType = OffendingFunction.getLinkage(); - if (LinkageType != GlobalValue::LinkageTypes::InternalLinkage && - LinkageType != GlobalValue::LinkageTypes::PrivateLinkage) { - OffendingFunction.setName(OffendingFunction.getName() + - "::call_overflow"); - } + OffendingFunction.setName(OffendingFunction.getName() + + "::call_overflow"); + OffendingFunction.setLinkage(GlobalValue::LinkageTypes::ExternalLinkage); } Offset = -Offset; } else if (MF.getSubtarget().getEnableNewCallConvention() &&