Pass 'va_end'
This commit is contained in:
parent
4c0b77d8ba
commit
5702d601df
@ -51,3 +51,6 @@ target_link_libraries(bb PUBLIC llvm_bindings)
|
||||
add_compile_options(-Wall -Wextra -pedantic -Wpedantic -Werror -Wno-c99-extensions -Wno-unused-function -Wno-missing-designated-field-initializers -fno-signed-char -fwrapv -fno-strict-aliasing)
|
||||
add_compile_definitions(CMAKE_PREFIX_PATH="${CMAKE_PREFIX_PATH}")
|
||||
add_compile_definitions(BB_CI=${BB_CI})
|
||||
|
||||
# add_compile_options(-fsanitize=address)
|
||||
# add_link_options(-fsanitize=address)
|
||||
|
@ -8510,6 +8510,7 @@ analyze_type = fn (module: &Module, value: &Value, expected_type: &Type, analysi
|
||||
// TODO: this is the default case
|
||||
.ampersand,
|
||||
.exclamation,
|
||||
.va_end,
|
||||
=>
|
||||
{
|
||||
>is_boolean = unary_is_boolean(unary_id);
|
||||
@ -11120,6 +11121,10 @@ emit_value = fn (module: &Module, value: &Value, type_kind: TypeKind, expect_con
|
||||
{
|
||||
llvm_value = llvm_unary_value;
|
||||
},
|
||||
.va_end =>
|
||||
{
|
||||
llvm_value = emit_intrinsic_call(module, ."llvm.va_end", [ module.llvm.pointer_type ][..], [ llvm_unary_value ][..]);
|
||||
},
|
||||
else => { #trap(); },
|
||||
}
|
||||
},
|
||||
@ -13717,6 +13722,7 @@ names: [_][]u8 =
|
||||
"struct_varargs",
|
||||
"struct_zero",
|
||||
"unreachable",
|
||||
"varargs",
|
||||
];
|
||||
|
||||
[export] main = fn [cc(c)] (argument_count: u32, argv: &&u8, envp: &&u8) s32
|
||||
|
@ -7065,7 +7065,8 @@ fn void analyze_block(Module* module, Block* block)
|
||||
|
||||
fn LLVMValueRef emit_constant_array(Module* module, Slice<Value*> elements, Type* element_type)
|
||||
{
|
||||
LLVMValueRef value_buffer[64];
|
||||
LLVMValueRef value_buffer[128];
|
||||
assert(elements.length <= array_length(value_buffer));
|
||||
|
||||
resolve_type_in_place(module, element_type);
|
||||
|
||||
|
@ -1937,7 +1937,7 @@ fn Value* parse_left(Module* module, Scope* scope, ValueBuilder builder)
|
||||
case TokenId::left_bracket:
|
||||
{
|
||||
u64 element_count = 0;
|
||||
Value* value_buffer[64];
|
||||
Value* value_buffer[128];
|
||||
|
||||
skip_space(module);
|
||||
|
||||
@ -1976,6 +1976,7 @@ fn Value* parse_left(Module* module, Scope* scope, ValueBuilder builder)
|
||||
}
|
||||
|
||||
auto value = parse_value(module, scope, {});
|
||||
assert(element_count < array_length(value_buffer));
|
||||
value_buffer[element_count] = value;
|
||||
element_count += 1;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user