| ... | @@ -21383,15 +21383,20 @@ static IrInstruction *ir_analyze_instruction_c_define(IrAnalyze *ira, IrInstruct | ... | @@ -21383,15 +21383,20 @@ static IrInstruction *ir_analyze_instruction_c_define(IrAnalyze *ira, IrInstruct |
| 21383 | if (type_is_invalid(value->value.type)) | 21383 | if (type_is_invalid(value->value.type)) |
| 21384 | return ira->codegen->invalid_instruction; | 21384 | return ira->codegen->invalid_instruction; |
| 21385 | | 21385 | |
| 21386 | Buf *define_value = ir_resolve_str(ira, value); | 21386 | Buf *define_value = nullptr; |
| 21387 | if (!define_value) | 21387 | // The second parameter is either a string or void (equivalent to "") |
| 21388 | return ira->codegen->invalid_instruction; | 21388 | if (value->value.type->id != ZigTypeIdVoid) { |
| | 21389 | define_value = ir_resolve_str(ira, value); |
| | 21390 | if (!define_value) |
| | 21391 | return ira->codegen->invalid_instruction; |
| | 21392 | } |
| 21389 | | 21393 | |
| 21390 | Buf *c_import_buf = exec_c_import_buf(ira->new_irb.exec); | 21394 | Buf *c_import_buf = exec_c_import_buf(ira->new_irb.exec); |
| 21391 | // We check for this error in pass1 | 21395 | // We check for this error in pass1 |
| 21392 | assert(c_import_buf); | 21396 | assert(c_import_buf); |
| 21393 | | 21397 | |
| 21394 | buf_appendf(c_import_buf, "#define %s %s\n", buf_ptr(define_name), buf_ptr(define_value)); | 21398 | buf_appendf(c_import_buf, "#define %s %s\n", buf_ptr(define_name), |
| | 21399 | define_value ? buf_ptr(define_value) : ""); |
| 21395 | | 21400 | |
| 21396 | return ir_const_void(ira, &instruction->base); | 21401 | return ir_const_void(ira, &instruction->base); |
| 21397 | } | 21402 | } |