diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2022-03-12 19:55:48 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2022-03-13 03:41:31 -0400 |
| commit | 0bc96354909c0828b7fd36ce0be5705b7b21d63c (patch) | |
| tree | 2b544abbf34776414478cb5fe4b8baad661337b3 /src/zig_llvm.cpp | |
| parent | 7ec2261dbf7a85f5c215f2dac22b80fca7de1e0f (diff) | |
| download | zig-0bc96354909c0828b7fd36ce0be5705b7b21d63c.tar.gz zig-0bc96354909c0828b7fd36ce0be5705b7b21d63c.zip | |
stage2: add debug info for locals in the LLVM backend
Adds 2 new AIR instructions:
* dbg_var_ptr
* dbg_var_val
Sema no longer emits dbg_stmt AIR instructions when strip=true.
LLVM backend: fixed lowerPtrToVoid when calling ptrAlignment on
the element type is problematic.
LLVM backend: fixed alloca instructions improperly getting debug
location annotated, causing chaotic debug info behavior.
zig_llvm.cpp: fixed incorrect bindings for a function that should use
unsigned integers for line and column.
A bunch of C test cases regressed because the new dbg_var AIR
instructions caused their operands to be alive, exposing latent bugs.
Mostly it's just a problem that the C backend lowers mutable
and const slices to the same C type, so we need to represent that in the
C backend instead of printing two duplicate typedefs.
Diffstat (limited to 'src/zig_llvm.cpp')
| -rw-r--r-- | src/zig_llvm.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/zig_llvm.cpp b/src/zig_llvm.cpp index 21e83319d9..528dd2e08a 100644 --- a/src/zig_llvm.cpp +++ b/src/zig_llvm.cpp @@ -791,7 +791,9 @@ void ZigLLVMDisposeDIBuilder(ZigLLVMDIBuilder *dbuilder) { delete di_builder; } -void ZigLLVMSetCurrentDebugLocation(LLVMBuilderRef builder, int line, int column, ZigLLVMDIScope *scope) { +void ZigLLVMSetCurrentDebugLocation(LLVMBuilderRef builder, + unsigned int line, unsigned int column, ZigLLVMDIScope *scope) +{ DIScope* di_scope = reinterpret_cast<DIScope*>(scope); DebugLoc debug_loc = DILocation::get(di_scope->getContext(), line, column, di_scope, nullptr, false); unwrap(builder)->SetCurrentDebugLocation(debug_loc); |
