Skip to content

Commit f99b0f3

Browse files
authored
[NFC] RuntimeLibcalls: Prefix the impls with 'Impl_' (llvm#153850)
As noted in llvm#153256, TableGen is generating reserved names for RuntimeLibcalls, which resulted in a build failure for Arm64EC since `vcruntime.h` defines `__security_check_cookie` as a macro. To avoid using reserved names, all impl names will now be prefixed with `Impl_`. `NumLibcallImpls` was lifted out as a `constexpr size_t` instead of being an enum field. While I was churning the dependent code, I also removed the TODO to move the impl enum into its own namespace and use an `enum class`: I experimented with using an `enum class` and adding a namespace, but we decided it was too verbose so it was dropped.
1 parent 7c96eac commit f99b0f3

13 files changed

+227
-212
lines changed

llvm/include/llvm/IR/RuntimeLibcalls.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ static inline auto libcalls() {
5050
}
5151

5252
static inline auto libcall_impls() {
53-
return enum_seq(static_cast<RTLIB::LibcallImpl>(1), RTLIB::NumLibcallImpls);
53+
return enum_seq(static_cast<RTLIB::LibcallImpl>(1),
54+
static_cast<RTLIB::LibcallImpl>(RTLIB::NumLibcallImpls));
5455
}
5556

5657
/// A simple container for information about the supported runtime calls.

llvm/lib/CodeGen/PreISelIntrinsicLowering.cpp

Lines changed: 29 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -507,83 +507,86 @@ bool PreISelIntrinsicLowering::lowerIntrinsics(Module &M) const {
507507
});
508508
break;
509509
case Intrinsic::objc_autorelease:
510-
Changed |= lowerObjCCall(F, RTLIB::objc_autorelease);
510+
Changed |= lowerObjCCall(F, RTLIB::impl_objc_autorelease);
511511
break;
512512
case Intrinsic::objc_autoreleasePoolPop:
513-
Changed |= lowerObjCCall(F, RTLIB::objc_autoreleasePoolPop);
513+
Changed |= lowerObjCCall(F, RTLIB::impl_objc_autoreleasePoolPop);
514514
break;
515515
case Intrinsic::objc_autoreleasePoolPush:
516-
Changed |= lowerObjCCall(F, RTLIB::objc_autoreleasePoolPush);
516+
Changed |= lowerObjCCall(F, RTLIB::impl_objc_autoreleasePoolPush);
517517
break;
518518
case Intrinsic::objc_autoreleaseReturnValue:
519-
Changed |= lowerObjCCall(F, RTLIB::objc_autoreleaseReturnValue);
519+
Changed |= lowerObjCCall(F, RTLIB::impl_objc_autoreleaseReturnValue);
520520
break;
521521
case Intrinsic::objc_copyWeak:
522-
Changed |= lowerObjCCall(F, RTLIB::objc_copyWeak);
522+
Changed |= lowerObjCCall(F, RTLIB::impl_objc_copyWeak);
523523
break;
524524
case Intrinsic::objc_destroyWeak:
525-
Changed |= lowerObjCCall(F, RTLIB::objc_destroyWeak);
525+
Changed |= lowerObjCCall(F, RTLIB::impl_objc_destroyWeak);
526526
break;
527527
case Intrinsic::objc_initWeak:
528-
Changed |= lowerObjCCall(F, RTLIB::objc_initWeak);
528+
Changed |= lowerObjCCall(F, RTLIB::impl_objc_initWeak);
529529
break;
530530
case Intrinsic::objc_loadWeak:
531-
Changed |= lowerObjCCall(F, RTLIB::objc_loadWeak);
531+
Changed |= lowerObjCCall(F, RTLIB::impl_objc_loadWeak);
532532
break;
533533
case Intrinsic::objc_loadWeakRetained:
534-
Changed |= lowerObjCCall(F, RTLIB::objc_loadWeakRetained);
534+
Changed |= lowerObjCCall(F, RTLIB::impl_objc_loadWeakRetained);
535535
break;
536536
case Intrinsic::objc_moveWeak:
537-
Changed |= lowerObjCCall(F, RTLIB::objc_moveWeak);
537+
Changed |= lowerObjCCall(F, RTLIB::impl_objc_moveWeak);
538538
break;
539539
case Intrinsic::objc_release:
540-
Changed |= lowerObjCCall(F, RTLIB::objc_release, true);
540+
Changed |= lowerObjCCall(F, RTLIB::impl_objc_release, true);
541541
break;
542542
case Intrinsic::objc_retain:
543-
Changed |= lowerObjCCall(F, RTLIB::objc_retain, true);
543+
Changed |= lowerObjCCall(F, RTLIB::impl_objc_retain, true);
544544
break;
545545
case Intrinsic::objc_retainAutorelease:
546-
Changed |= lowerObjCCall(F, RTLIB::objc_retainAutorelease);
546+
Changed |= lowerObjCCall(F, RTLIB::impl_objc_retainAutorelease);
547547
break;
548548
case Intrinsic::objc_retainAutoreleaseReturnValue:
549-
Changed |= lowerObjCCall(F, RTLIB::objc_retainAutoreleaseReturnValue);
549+
Changed |=
550+
lowerObjCCall(F, RTLIB::impl_objc_retainAutoreleaseReturnValue);
550551
break;
551552
case Intrinsic::objc_retainAutoreleasedReturnValue:
552-
Changed |= lowerObjCCall(F, RTLIB::objc_retainAutoreleasedReturnValue);
553+
Changed |=
554+
lowerObjCCall(F, RTLIB::impl_objc_retainAutoreleasedReturnValue);
553555
break;
554556
case Intrinsic::objc_claimAutoreleasedReturnValue:
555-
Changed |= lowerObjCCall(F, RTLIB::objc_claimAutoreleasedReturnValue);
557+
Changed |=
558+
lowerObjCCall(F, RTLIB::impl_objc_claimAutoreleasedReturnValue);
556559
break;
557560
case Intrinsic::objc_retainBlock:
558-
Changed |= lowerObjCCall(F, RTLIB::objc_retainBlock);
561+
Changed |= lowerObjCCall(F, RTLIB::impl_objc_retainBlock);
559562
break;
560563
case Intrinsic::objc_storeStrong:
561-
Changed |= lowerObjCCall(F, RTLIB::objc_storeStrong);
564+
Changed |= lowerObjCCall(F, RTLIB::impl_objc_storeStrong);
562565
break;
563566
case Intrinsic::objc_storeWeak:
564-
Changed |= lowerObjCCall(F, RTLIB::objc_storeWeak);
567+
Changed |= lowerObjCCall(F, RTLIB::impl_objc_storeWeak);
565568
break;
566569
case Intrinsic::objc_unsafeClaimAutoreleasedReturnValue:
567570
Changed |=
568-
lowerObjCCall(F, RTLIB::objc_unsafeClaimAutoreleasedReturnValue);
571+
lowerObjCCall(F, RTLIB::impl_objc_unsafeClaimAutoreleasedReturnValue);
569572
break;
570573
case Intrinsic::objc_retainedObject:
571-
Changed |= lowerObjCCall(F, RTLIB::objc_retainedObject);
574+
Changed |= lowerObjCCall(F, RTLIB::impl_objc_retainedObject);
572575
break;
573576
case Intrinsic::objc_unretainedObject:
574-
Changed |= lowerObjCCall(F, RTLIB::objc_unretainedObject);
577+
Changed |= lowerObjCCall(F, RTLIB::impl_objc_unretainedObject);
575578
break;
576579
case Intrinsic::objc_unretainedPointer:
577-
Changed |= lowerObjCCall(F, RTLIB::objc_unretainedPointer);
580+
Changed |= lowerObjCCall(F, RTLIB::impl_objc_unretainedPointer);
578581
break;
579582
case Intrinsic::objc_retain_autorelease:
580-
Changed |= lowerObjCCall(F, RTLIB::objc_retain_autorelease);
583+
Changed |= lowerObjCCall(F, RTLIB::impl_objc_retain_autorelease);
581584
break;
582585
case Intrinsic::objc_sync_enter:
583-
Changed |= lowerObjCCall(F, RTLIB::objc_sync_enter);
586+
Changed |= lowerObjCCall(F, RTLIB::impl_objc_sync_enter);
584587
break;
585588
case Intrinsic::objc_sync_exit:
586-
Changed |= lowerObjCCall(F, RTLIB::objc_sync_exit);
589+
Changed |= lowerObjCCall(F, RTLIB::impl_objc_sync_exit);
587590
break;
588591
case Intrinsic::exp:
589592
case Intrinsic::exp2:

llvm/lib/CodeGen/TargetLoweringBase.cpp

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -612,23 +612,23 @@ RTLIB::Libcall RTLIB::getMEMSET_ELEMENT_UNORDERED_ATOMIC(uint64_t ElementSize) {
612612
ISD::CondCode TargetLoweringBase::getSoftFloatCmpLibcallPredicate(
613613
RTLIB::LibcallImpl Impl) const {
614614
switch (Impl) {
615-
case RTLIB::__aeabi_dcmpeq__une:
616-
case RTLIB::__aeabi_fcmpeq__une:
615+
case RTLIB::impl___aeabi_dcmpeq__une:
616+
case RTLIB::impl___aeabi_fcmpeq__une:
617617
// Usage in the eq case, so we have to invert the comparison.
618618
return ISD::SETEQ;
619-
case RTLIB::__aeabi_dcmpeq__oeq:
620-
case RTLIB::__aeabi_fcmpeq__oeq:
619+
case RTLIB::impl___aeabi_dcmpeq__oeq:
620+
case RTLIB::impl___aeabi_fcmpeq__oeq:
621621
// Normal comparison to boolean value.
622622
return ISD::SETNE;
623-
case RTLIB::__aeabi_dcmplt:
624-
case RTLIB::__aeabi_dcmple:
625-
case RTLIB::__aeabi_dcmpge:
626-
case RTLIB::__aeabi_dcmpgt:
627-
case RTLIB::__aeabi_dcmpun:
628-
case RTLIB::__aeabi_fcmplt:
629-
case RTLIB::__aeabi_fcmple:
630-
case RTLIB::__aeabi_fcmpge:
631-
case RTLIB::__aeabi_fcmpgt:
623+
case RTLIB::impl___aeabi_dcmplt:
624+
case RTLIB::impl___aeabi_dcmple:
625+
case RTLIB::impl___aeabi_dcmpge:
626+
case RTLIB::impl___aeabi_dcmpgt:
627+
case RTLIB::impl___aeabi_dcmpun:
628+
case RTLIB::impl___aeabi_fcmplt:
629+
case RTLIB::impl___aeabi_fcmple:
630+
case RTLIB::impl___aeabi_fcmpge:
631+
case RTLIB::impl___aeabi_fcmpgt:
632632
/// The AEABI versions return a typical boolean value, so we can compare
633633
/// against the integer result as simply != 0.
634634
return ISD::SETNE;

llvm/lib/IR/RuntimeLibcalls.cpp

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,19 @@ void RuntimeLibcallsInfo::initLibcalls(const Triple &TT,
4040
// hard-float calling convention by default.
4141
if (!TT.isWatchABI()) {
4242
if (isAAPCS_ABI(TT, ABIName)) {
43-
setLibcallImplCallingConv(RTLIB::__truncsfhf2, CallingConv::ARM_AAPCS);
44-
setLibcallImplCallingConv(RTLIB::__truncdfhf2, CallingConv::ARM_AAPCS);
45-
setLibcallImplCallingConv(RTLIB::__extendhfsf2, CallingConv::ARM_AAPCS);
43+
setLibcallImplCallingConv(RTLIB::impl___truncsfhf2,
44+
CallingConv::ARM_AAPCS);
45+
setLibcallImplCallingConv(RTLIB::impl___truncdfhf2,
46+
CallingConv::ARM_AAPCS);
47+
setLibcallImplCallingConv(RTLIB::impl___extendhfsf2,
48+
CallingConv::ARM_AAPCS);
4649
} else {
47-
setLibcallImplCallingConv(RTLIB::__truncsfhf2, CallingConv::ARM_APCS);
48-
setLibcallImplCallingConv(RTLIB::__truncdfhf2, CallingConv::ARM_APCS);
49-
setLibcallImplCallingConv(RTLIB::__extendhfsf2, CallingConv::ARM_APCS);
50+
setLibcallImplCallingConv(RTLIB::impl___truncsfhf2,
51+
CallingConv::ARM_APCS);
52+
setLibcallImplCallingConv(RTLIB::impl___truncdfhf2,
53+
CallingConv::ARM_APCS);
54+
setLibcallImplCallingConv(RTLIB::impl___extendhfsf2,
55+
CallingConv::ARM_APCS);
5056
}
5157
}
5258

llvm/lib/Target/ARM/ARMISelLowering.cpp

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -529,56 +529,56 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
529529
const RTLIB::LibcallImpl Impl;
530530
} LibraryCalls[] = {
531531
// Single-precision floating-point arithmetic.
532-
{ RTLIB::ADD_F32, RTLIB::__addsf3vfp },
533-
{ RTLIB::SUB_F32, RTLIB::__subsf3vfp },
534-
{ RTLIB::MUL_F32, RTLIB::__mulsf3vfp },
535-
{ RTLIB::DIV_F32, RTLIB::__divsf3vfp },
532+
{ RTLIB::ADD_F32, RTLIB::impl___addsf3vfp },
533+
{ RTLIB::SUB_F32, RTLIB::impl___subsf3vfp },
534+
{ RTLIB::MUL_F32, RTLIB::impl___mulsf3vfp },
535+
{ RTLIB::DIV_F32, RTLIB::impl___divsf3vfp },
536536

537537
// Double-precision floating-point arithmetic.
538-
{ RTLIB::ADD_F64, RTLIB::__adddf3vfp },
539-
{ RTLIB::SUB_F64, RTLIB::__subdf3vfp },
540-
{ RTLIB::MUL_F64, RTLIB::__muldf3vfp },
541-
{ RTLIB::DIV_F64, RTLIB::__divdf3vfp },
538+
{ RTLIB::ADD_F64, RTLIB::impl___adddf3vfp },
539+
{ RTLIB::SUB_F64, RTLIB::impl___subdf3vfp },
540+
{ RTLIB::MUL_F64, RTLIB::impl___muldf3vfp },
541+
{ RTLIB::DIV_F64, RTLIB::impl___divdf3vfp },
542542

543543
// Single-precision comparisons.
544-
{ RTLIB::OEQ_F32, RTLIB::__eqsf2vfp },
545-
{ RTLIB::UNE_F32, RTLIB::__nesf2vfp },
546-
{ RTLIB::OLT_F32, RTLIB::__ltsf2vfp },
547-
{ RTLIB::OLE_F32, RTLIB::__lesf2vfp },
548-
{ RTLIB::OGE_F32, RTLIB::__gesf2vfp },
549-
{ RTLIB::OGT_F32, RTLIB::__gtsf2vfp },
550-
{ RTLIB::UO_F32, RTLIB::__unordsf2vfp },
544+
{ RTLIB::OEQ_F32, RTLIB::impl___eqsf2vfp },
545+
{ RTLIB::UNE_F32, RTLIB::impl___nesf2vfp },
546+
{ RTLIB::OLT_F32, RTLIB::impl___ltsf2vfp },
547+
{ RTLIB::OLE_F32, RTLIB::impl___lesf2vfp },
548+
{ RTLIB::OGE_F32, RTLIB::impl___gesf2vfp },
549+
{ RTLIB::OGT_F32, RTLIB::impl___gtsf2vfp },
550+
{ RTLIB::UO_F32, RTLIB::impl___unordsf2vfp },
551551

552552
// Double-precision comparisons.
553-
{ RTLIB::OEQ_F64, RTLIB::__eqdf2vfp },
554-
{ RTLIB::UNE_F64, RTLIB::__nedf2vfp },
555-
{ RTLIB::OLT_F64, RTLIB::__ltdf2vfp },
556-
{ RTLIB::OLE_F64, RTLIB::__ledf2vfp },
557-
{ RTLIB::OGE_F64, RTLIB::__gedf2vfp },
558-
{ RTLIB::OGT_F64, RTLIB::__gtdf2vfp },
559-
{ RTLIB::UO_F64, RTLIB::__unorddf2vfp },
553+
{ RTLIB::OEQ_F64, RTLIB::impl___eqdf2vfp },
554+
{ RTLIB::UNE_F64, RTLIB::impl___nedf2vfp },
555+
{ RTLIB::OLT_F64, RTLIB::impl___ltdf2vfp },
556+
{ RTLIB::OLE_F64, RTLIB::impl___ledf2vfp },
557+
{ RTLIB::OGE_F64, RTLIB::impl___gedf2vfp },
558+
{ RTLIB::OGT_F64, RTLIB::impl___gtdf2vfp },
559+
{ RTLIB::UO_F64, RTLIB::impl___unorddf2vfp },
560560

561561
// Floating-point to integer conversions.
562562
// i64 conversions are done via library routines even when generating VFP
563563
// instructions, so use the same ones.
564-
{ RTLIB::FPTOSINT_F64_I32, RTLIB::__fixdfsivfp },
565-
{ RTLIB::FPTOUINT_F64_I32, RTLIB::__fixunsdfsivfp },
566-
{ RTLIB::FPTOSINT_F32_I32, RTLIB::__fixsfsivfp },
567-
{ RTLIB::FPTOUINT_F32_I32, RTLIB::__fixunssfsivfp },
564+
{ RTLIB::FPTOSINT_F64_I32, RTLIB::impl___fixdfsivfp },
565+
{ RTLIB::FPTOUINT_F64_I32, RTLIB::impl___fixunsdfsivfp },
566+
{ RTLIB::FPTOSINT_F32_I32, RTLIB::impl___fixsfsivfp },
567+
{ RTLIB::FPTOUINT_F32_I32, RTLIB::impl___fixunssfsivfp },
568568

569569
// Conversions between floating types.
570-
{ RTLIB::FPROUND_F64_F32, RTLIB::__truncdfsf2vfp },
571-
{ RTLIB::FPEXT_F32_F64, RTLIB::__extendsfdf2vfp },
570+
{ RTLIB::FPROUND_F64_F32, RTLIB::impl___truncdfsf2vfp },
571+
{ RTLIB::FPEXT_F32_F64, RTLIB::impl___extendsfdf2vfp },
572572

573573
// Integer to floating-point conversions.
574574
// i64 conversions are done via library routines even when generating VFP
575575
// instructions, so use the same ones.
576576
// FIXME: There appears to be some naming inconsistency in ARM libgcc:
577577
// e.g., __floatunsidf vs. __floatunssidfvfp.
578-
{ RTLIB::SINTTOFP_I32_F64, RTLIB::__floatsidfvfp },
579-
{ RTLIB::UINTTOFP_I32_F64, RTLIB::__floatunssidfvfp },
580-
{ RTLIB::SINTTOFP_I32_F32, RTLIB::__floatsisfvfp },
581-
{ RTLIB::UINTTOFP_I32_F32, RTLIB::__floatunssisfvfp },
578+
{ RTLIB::SINTTOFP_I32_F64, RTLIB::impl___floatsidfvfp },
579+
{ RTLIB::UINTTOFP_I32_F64, RTLIB::impl___floatunssidfvfp },
580+
{ RTLIB::SINTTOFP_I32_F32, RTLIB::impl___floatsisfvfp },
581+
{ RTLIB::UINTTOFP_I32_F32, RTLIB::impl___floatunssisfvfp },
582582
};
583583
// clang-format on
584584

llvm/lib/Target/MSP430/MSP430ISelLowering.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -154,9 +154,9 @@ MSP430TargetLowering::MSP430TargetLowering(const TargetMachine &TM,
154154
const RTLIB::LibcallImpl Impl;
155155
} LibraryCalls[] = {
156156
// Integer Multiply - EABI Table 9
157-
{RTLIB::MUL_I16, RTLIB::__mspabi_mpyi_hw},
158-
{RTLIB::MUL_I32, RTLIB::__mspabi_mpyl_hw},
159-
{RTLIB::MUL_I64, RTLIB::__mspabi_mpyll_hw},
157+
{RTLIB::MUL_I16, RTLIB::impl___mspabi_mpyi_hw},
158+
{RTLIB::MUL_I32, RTLIB::impl___mspabi_mpyl_hw},
159+
{RTLIB::MUL_I64, RTLIB::impl___mspabi_mpyll_hw},
160160
// TODO The __mspabi_mpysl*_hw functions ARE implemented in libgcc
161161
// TODO The __mspabi_mpyul*_hw functions ARE implemented in libgcc
162162
};
@@ -169,9 +169,9 @@ MSP430TargetLowering::MSP430TargetLowering(const TargetMachine &TM,
169169
const RTLIB::LibcallImpl Impl;
170170
} LibraryCalls[] = {
171171
// Integer Multiply - EABI Table 9
172-
{RTLIB::MUL_I16, RTLIB::__mspabi_mpyi_hw},
173-
{RTLIB::MUL_I32, RTLIB::__mspabi_mpyl_hw32},
174-
{RTLIB::MUL_I64, RTLIB::__mspabi_mpyll_hw32},
172+
{RTLIB::MUL_I16, RTLIB::impl___mspabi_mpyi_hw},
173+
{RTLIB::MUL_I32, RTLIB::impl___mspabi_mpyl_hw32},
174+
{RTLIB::MUL_I64, RTLIB::impl___mspabi_mpyll_hw32},
175175
// TODO The __mspabi_mpysl*_hw32 functions ARE implemented in libgcc
176176
// TODO The __mspabi_mpyul*_hw32 functions ARE implemented in libgcc
177177
};
@@ -184,9 +184,9 @@ MSP430TargetLowering::MSP430TargetLowering(const TargetMachine &TM,
184184
const RTLIB::LibcallImpl Impl;
185185
} LibraryCalls[] = {
186186
// Integer Multiply - EABI Table 9
187-
{RTLIB::MUL_I16, RTLIB::__mspabi_mpyi_f5hw},
188-
{RTLIB::MUL_I32, RTLIB::__mspabi_mpyl_f5hw},
189-
{RTLIB::MUL_I64, RTLIB::__mspabi_mpyll_f5hw},
187+
{RTLIB::MUL_I16, RTLIB::impl___mspabi_mpyi_f5hw},
188+
{RTLIB::MUL_I32, RTLIB::impl___mspabi_mpyl_f5hw},
189+
{RTLIB::MUL_I64, RTLIB::impl___mspabi_mpyll_f5hw},
190190
// TODO The __mspabi_mpysl*_f5hw functions ARE implemented in libgcc
191191
// TODO The __mspabi_mpyul*_f5hw functions ARE implemented in libgcc
192192
};
@@ -199,9 +199,9 @@ MSP430TargetLowering::MSP430TargetLowering(const TargetMachine &TM,
199199
const RTLIB::LibcallImpl Impl;
200200
} LibraryCalls[] = {
201201
// Integer Multiply - EABI Table 9
202-
{RTLIB::MUL_I16, RTLIB::__mspabi_mpyi},
203-
{RTLIB::MUL_I32, RTLIB::__mspabi_mpyl},
204-
{RTLIB::MUL_I64, RTLIB::__mspabi_mpyll},
202+
{RTLIB::MUL_I16, RTLIB::impl___mspabi_mpyi},
203+
{RTLIB::MUL_I32, RTLIB::impl___mspabi_mpyl},
204+
{RTLIB::MUL_I64, RTLIB::impl___mspabi_mpyll},
205205
// The __mspabi_mpysl* functions are NOT implemented in libgcc
206206
// The __mspabi_mpyul* functions are NOT implemented in libgcc
207207
};

0 commit comments

Comments
 (0)