mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
Fix when memcmp is defined.
This commit is contained in:
@@ -1955,6 +1955,7 @@ extern const char *kw_inout;
|
||||
extern const char *kw_len;
|
||||
extern const char *kw_main;
|
||||
extern const char *kw_mainstub;
|
||||
extern const char *kw_memcmp;
|
||||
extern const char *kw_nameof;
|
||||
extern const char *kw_offsetof;
|
||||
extern const char *kw_ordinal;
|
||||
|
||||
@@ -1213,7 +1213,14 @@ LLVMValueRef llvm_get_ref(GenContext *c, Decl *decl)
|
||||
}
|
||||
LLVMTypeRef type = llvm_get_type(c, decl->type);
|
||||
scratch_buffer_set_extern_decl_name(decl, true);
|
||||
if (decl->name == kw_memcmp && c->memcmp_function)
|
||||
{
|
||||
backend_ref = decl->backend_ref = c->memcmp_function;
|
||||
}
|
||||
else
|
||||
{
|
||||
backend_ref = decl->backend_ref = LLVMAddFunction(c->module, scratch_buffer_to_string(), type);
|
||||
}
|
||||
llvm_append_function_attributes(c, decl);
|
||||
if (decl->is_export && platform_target.os == OS_TYPE_WIN32 && !active_target.win.def && decl->name != kw_main && decl->name != kw_mainstub)
|
||||
{
|
||||
|
||||
@@ -3691,10 +3691,10 @@ static inline void llvm_emit_memcmp(GenContext *c, BEValue *be_value, LLVMValueR
|
||||
{
|
||||
if (!c->memcmp_function)
|
||||
{
|
||||
c->memcmp_function = LLVMGetNamedFunction(c->module, "memcmp");
|
||||
c->memcmp_function = LLVMGetNamedFunction(c->module, kw_memcmp);
|
||||
if (!c->memcmp_function)
|
||||
{
|
||||
c->memcmp_function = LLVMAddFunction(c->module, "memcmp", c->memcmp_function_type);
|
||||
c->memcmp_function = LLVMAddFunction(c->module, kw_memcmp, c->memcmp_function_type);
|
||||
}
|
||||
}
|
||||
LLVMValueRef args[3] = { ptr, other_ptr, size };
|
||||
|
||||
@@ -51,6 +51,7 @@ const char *kw_in;
|
||||
const char *kw_inout;
|
||||
const char *kw_len;
|
||||
const char *kw_main;
|
||||
const char *kw_memcmp;
|
||||
const char *kw_mainstub;
|
||||
const char *kw_nameof;
|
||||
const char *kw_offsetof;
|
||||
@@ -135,6 +136,7 @@ void symtab_init(uint32_t capacity)
|
||||
kw_inout = KW_DEF("inout");
|
||||
kw_mainstub = KW_DEF("_$main");
|
||||
kw_main = KW_DEF("main");
|
||||
kw_memcmp = KW_DEF("memcmp");
|
||||
kw_nameof = KW_DEF("nameof");
|
||||
kw_offsetof = KW_DEF("offsetof");
|
||||
kw_ordinal = KW_DEF("ordinal");
|
||||
|
||||
Reference in New Issue
Block a user