diff options
| author | FrancisTheCat <90558133+FrancisTheCat@users.noreply.github.com> | 2024-06-14 16:34:21 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-14 16:34:21 +0200 |
| commit | cd5fa8523f79ce981e5047dad5b66155f493d169 (patch) | |
| tree | 1a8acb79d3bf1b5fca3f0c6ac20bece15a2cbfd2 /src/check_decl.cpp | |
| parent | ec7b77fc0f6ed20eecf25039c6acbe2050cef877 (diff) | |
| parent | ff4787070d9673a417f549f1b9452e675c96f992 (diff) | |
Merge branch 'odin-lang:master' into master
Diffstat (limited to 'src/check_decl.cpp')
| -rw-r--r-- | src/check_decl.cpp | 12 |
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) { |