aboutsummaryrefslogtreecommitdiff
path: root/src/check_decl.cpp
diff options
context:
space:
mode:
authorFranz Höltermann <Francis_the_cat@gmx.de>2024-06-14 17:43:09 +0200
committerFranz Höltermann <Francis_the_cat@gmx.de>2024-06-14 17:43:09 +0200
commitc3302615a3f03d2d8556b8a7ba7df01ac6448bff (patch)
tree6cdf05bc057ed93a7e66d6a2467b63f048eeecff /src/check_decl.cpp
parent3c3f0f90c2c8d063845cf0ecb61a23705749e445 (diff)
parentcd5fa8523f79ce981e5047dad5b66155f493d169 (diff)
Merge branch 'master' of https://github.com/FrancisTheCat/Odin
Diffstat (limited to 'src/check_decl.cpp')
-rw-r--r--src/check_decl.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/check_decl.cpp b/src/check_decl.cpp
index 13b14149a..02445cbc6 100644
--- a/src/check_decl.cpp
+++ b/src/check_decl.cpp
@@ -89,6 +89,9 @@ gb_internal Type *check_init_variable(CheckerContext *ctx, Entity *e, Operand *o
return nullptr;
} else if (is_type_polymorphic(t)) {
Entity *e = entity_of_node(operand->expr);
+ if (e == nullptr) {
+ return nullptr;
+ }
if (e->state.load() != EntityState_Resolved) {
gbString str = type_to_string(t);
defer (gb_string_free(str));
@@ -1142,7 +1145,14 @@ gb_internal void check_proc_decl(CheckerContext *ctx, Entity *e, DeclInfo *d) {
}
if (ac.link_name.len > 0) {
- e->Procedure.link_name = ac.link_name;
+ String ln = ac.link_name;
+ e->Procedure.link_name = ln;
+ if (ln == "memcpy" ||
+ ln == "memmove" ||
+ ln == "mem_copy" ||
+ ln == "mem_copy_non_overlapping") {
+ e->Procedure.is_memcpy_like = true;
+ }
}
if (ac.deferred_procedure.entity != nullptr) {