@@ -3408,15 +3408,18 @@ MipsTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
34083408 // that are part of this compilation unit.
34093409 bool InternalLinkage = false ;
34103410 bool IsMustTail = CLI.CB && CLI.CB ->isMustTailCall ();
3411- if (IsTailCall && !IsMustTail ) {
3411+ if (IsTailCall) {
34123412 IsTailCall = isEligibleForTailCallOptimization (
3413- CCInfo, StackSize, *MF.getInfo <MipsFunctionInfo>());
3414- if (GlobalAddressSDNode *G = dyn_cast<GlobalAddressSDNode>(Callee)) {
3415- InternalLinkage = G->getGlobal ()->hasInternalLinkage ();
3416- IsTailCall &= (InternalLinkage || G->getGlobal ()->hasLocalLinkage () ||
3417- G->getGlobal ()->hasPrivateLinkage () ||
3418- G->getGlobal ()->hasHiddenVisibility () ||
3419- G->getGlobal ()->hasProtectedVisibility ());
3413+ CCInfo, StackSize, *MF.getInfo <MipsFunctionInfo>(), IsMustTail);
3414+ if (IsTailCall) {
3415+ if (GlobalAddressSDNode *G = dyn_cast<GlobalAddressSDNode>(Callee)) {
3416+ InternalLinkage = G->getGlobal ()->hasInternalLinkage ();
3417+ IsTailCall &= (InternalLinkage || G->getGlobal ()->hasLocalLinkage () ||
3418+ G->getGlobal ()->isDSOLocal () ||
3419+ G->getGlobal ()->hasPrivateLinkage () ||
3420+ G->getGlobal ()->hasHiddenVisibility () ||
3421+ G->getGlobal ()->hasProtectedVisibility ());
3422+ }
34203423 }
34213424 }
34223425 if (!IsTailCall && IsMustTail)
0 commit comments