runtime.cpp (ldc-1.32.0) | : | runtime.cpp (ldc-1.32.1) | ||
---|---|---|---|---|
skipping to change at line 367 | skipping to change at line 367 | |||
// OSX: void __assert_rtn(const char *func, const char *file, unsigned line, | // OSX: void __assert_rtn(const char *func, const char *file, unsigned line, | |||
// const char *msg) | // const char *msg) | |||
// Android: void __assert(const char *file, int line, const char *msg) | // Android: void __assert(const char *file, int line, const char *msg) | |||
// MSVC: void _assert(const char *msg, const char *file, unsigned line) | // MSVC: void _assert(const char *msg, const char *file, unsigned line) | |||
// Solaris: void __assert_c99(const char *assertion, const char *filename, int l ine_num, | // Solaris: void __assert_c99(const char *assertion, const char *filename, int l ine_num, | |||
// const char *funcname); | // const char *funcname); | |||
// Musl: void __assert_fail(const char *assertion, const char *filename, int line_num, | // Musl: void __assert_fail(const char *assertion, const char *filename, int line_num, | |||
// const char *funcname); | // const char *funcname); | |||
// uClibc: void __assert(const char *assertion, const char *filename, int linen umber, | // uClibc: void __assert(const char *assertion, const char *filename, int linen umber, | |||
// const char *function); | // const char *function); | |||
// newlib: void __assert_func(const char *file, int line, const char *func, | ||||
// const char *failedexpr) | ||||
// else: void __assert(const char *msg, const char *file, unsigned line) | // else: void __assert(const char *msg, const char *file, unsigned line) | |||
static const char *getCAssertFunctionName() { | static const char *getCAssertFunctionName() { | |||
const auto &triple = *global.params.targetTriple; | const auto &triple = *global.params.targetTriple; | |||
if (triple.isOSDarwin()) { | if (triple.isOSDarwin()) { | |||
return "__assert_rtn"; | return "__assert_rtn"; | |||
} else if (triple.isWindowsMSVCEnvironment()) { | } else if (triple.isWindowsMSVCEnvironment()) { | |||
return "_assert"; | return "_assert"; | |||
} else if (triple.isOSSolaris()) { | } else if (triple.isOSSolaris()) { | |||
return "__assert_c99"; | return "__assert_c99"; | |||
} else if (triple.isMusl()) { | } else if (triple.isMusl()) { | |||
return "__assert_fail"; | return "__assert_fail"; | |||
} else if (global.params.isNewlibEnvironment) { | ||||
return "__assert_func"; | ||||
} | } | |||
return "__assert"; | return "__assert"; | |||
} | } | |||
static std::vector<PotentiallyLazyType> getCAssertFunctionParamTypes() { | static std::vector<PotentiallyLazyType> getCAssertFunctionParamTypes() { | |||
const auto &triple = *global.params.targetTriple; | const auto &triple = *global.params.targetTriple; | |||
const auto voidPtr = Type::tvoidptr; | const auto voidPtr = Type::tvoidptr; | |||
const auto uint = Type::tuns32; | const auto uint = Type::tuns32; | |||
if (triple.isOSDarwin() || triple.isOSSolaris() || triple.isMusl() || | if (triple.isOSDarwin() || triple.isOSSolaris() || triple.isMusl() || | |||
global.params.isUClibcEnvironment) { | global.params.isUClibcEnvironment) { | |||
return {voidPtr, voidPtr, uint, voidPtr}; | return {voidPtr, voidPtr, uint, voidPtr}; | |||
} | } | |||
if (triple.getEnvironment() == llvm::Triple::Android) { | if (triple.getEnvironment() == llvm::Triple::Android) { | |||
return {voidPtr, uint, voidPtr}; | return {voidPtr, uint, voidPtr}; | |||
} | } | |||
if (global.params.isNewlibEnvironment) { | ||||
return {voidPtr, uint, voidPtr, voidPtr}; | ||||
} | ||||
return {voidPtr, voidPtr, uint}; | return {voidPtr, voidPtr, uint}; | |||
} | } | |||
llvm::Function *getCAssertFunction(const Loc &loc, llvm::Module &target) { | llvm::Function *getCAssertFunction(const Loc &loc, llvm::Module &target) { | |||
return getRuntimeFunction(loc, target, getCAssertFunctionName()); | return getRuntimeFunction(loc, target, getCAssertFunctionName()); | |||
} | } | |||
//////////////////////////////////////////////////////////////////////////////// | //////////////////////////////////////////////////////////////////////////////// | |||
// Continue-unwinding function: | // Continue-unwinding function: | |||
End of changes. 3 change blocks. | ||||
0 lines changed or deleted | 7 lines changed or added |