mirror of
https://github.com/ziglang/zig.git
synced 2026-01-17 21:05:12 +00:00
Add comment explaining the alignment setting
This commit is contained in:
parent
e3e4af7271
commit
d23dfdeab9
@ -4161,6 +4161,12 @@ static LLVMValueRef gen_frame_size(CodeGen *g, LLVMValueRef fn_val) {
|
||||
LLVMValueRef negative_one = LLVMConstInt(LLVMInt32Type(), -1, true);
|
||||
LLVMValueRef prefix_ptr = LLVMBuildInBoundsGEP(g->builder, casted_fn_val, &negative_one, 1, "");
|
||||
LLVMValueRef load_inst = LLVMBuildLoad(g->builder, prefix_ptr, "");
|
||||
|
||||
// Some architectures (e.g SPARCv9) has different alignment requirements between a
|
||||
// function/usize pointer and also require all loads to be aligned.
|
||||
// On those architectures, not explicitly setting the alignment will lead into @frameSize
|
||||
// generating usize-aligned load instruction that could crash if the function pointer
|
||||
// happens to be not usize-aligned.
|
||||
LLVMSetAlignment(load_inst, 1);
|
||||
return load_inst;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user