diff options
| author | gingerBill <gingerBill@users.noreply.github.com> | 2026-01-22 13:54:53 +0000 |
|---|---|---|
| committer | gingerBill <gingerBill@users.noreply.github.com> | 2026-01-22 13:54:53 +0000 |
| commit | 5072d5c776eb53afb2439f43dfa40ccadb68dfb9 (patch) | |
| tree | 60818a92f4cd22e68512fc7488253b9705bca038 /src/llvm_backend.cpp | |
| parent | 78ed2560d3f31b3712bebda9825978b7dc60dcbe (diff) | |
Add warning in code generation stage which might cause a possible code gen issue, when non-constant initialization is large
Diffstat (limited to 'src/llvm_backend.cpp')
| -rw-r--r-- | src/llvm_backend.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index 34afb9c8c..c15f326f8 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -2045,6 +2045,11 @@ gb_internal bool lb_init_global_var(lbModule *m, lbProcedure *p, Entity *e, Ast lb_emit_store(p, data, lb_emit_conv(p, gp, t_rawptr)); lb_emit_store(p, ti, lb_typeid(p->module, var_type)); } else { + i64 sz = type_size_of(e->type); + if (sz >= 4 * 1024) { + warning(init_expr, "[Possible Code Generation Issue] Non-constant initialization is large (%lld bytes), and might cause problems with LLVM", cast(long long)sz); + } + LLVMTypeRef vt = llvm_addr_type(p->module, var.var); lbValue src0 = lb_emit_conv(p, var.init, t); LLVMValueRef src = OdinLLVMBuildTransmute(p, src0.value, vt); |