diff options
| author | Franz Höltermann <Francis_the_cat@gmx.de> | 2024-06-14 17:43:09 +0200 |
|---|---|---|
| committer | Franz Höltermann <Francis_the_cat@gmx.de> | 2024-06-14 17:43:09 +0200 |
| commit | c3302615a3f03d2d8556b8a7ba7df01ac6448bff (patch) | |
| tree | 6cdf05bc057ed93a7e66d6a2467b63f048eeecff /src/check_decl.cpp | |
| parent | 3c3f0f90c2c8d063845cf0ecb61a23705749e445 (diff) | |
| parent | cd5fa8523f79ce981e5047dad5b66155f493d169 (diff) | |
Merge branch 'master' of https://github.com/FrancisTheCat/Odin
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) { |