From e2c68fce89d7d308b445ed26025a674aff938151 Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Tue, 10 Sep 2019 16:19:31 +0200 Subject: Accept void argument for @cDefine value Closes #2612 --- src/ir.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src/ir.cpp') diff --git a/src/ir.cpp b/src/ir.cpp index 3e699b50eb..56a12d2438 100644 --- a/src/ir.cpp +++ b/src/ir.cpp @@ -21383,15 +21383,20 @@ static IrInstruction *ir_analyze_instruction_c_define(IrAnalyze *ira, IrInstruct if (type_is_invalid(value->value.type)) return ira->codegen->invalid_instruction; - Buf *define_value = ir_resolve_str(ira, value); - if (!define_value) - return ira->codegen->invalid_instruction; + Buf *define_value = nullptr; + // The second parameter is either a string or void (equivalent to "") + if (value->value.type->id != ZigTypeIdVoid) { + define_value = ir_resolve_str(ira, value); + if (!define_value) + return ira->codegen->invalid_instruction; + } Buf *c_import_buf = exec_c_import_buf(ira->new_irb.exec); // We check for this error in pass1 assert(c_import_buf); - buf_appendf(c_import_buf, "#define %s %s\n", buf_ptr(define_name), buf_ptr(define_value)); + buf_appendf(c_import_buf, "#define %s %s\n", buf_ptr(define_name), + define_value ? buf_ptr(define_value) : ""); return ir_const_void(ira, &instruction->base); } -- cgit v1.2.3