delete @generatedCode builtin function

good riddance
master
Andrew Kelley 2017-05-07 23:25:36 -04:00
parent 8abcd94ece
commit 2f20fe6ecd
5 changed files with 4 additions and 78 deletions

View File

@ -1182,7 +1182,6 @@ enum BuiltinFnId {
BuiltinFnIdCUndef, BuiltinFnIdCUndef,
BuiltinFnIdCompileErr, BuiltinFnIdCompileErr,
BuiltinFnIdCompileLog, BuiltinFnIdCompileLog,
BuiltinFnIdGeneratedCode,
BuiltinFnIdCtz, BuiltinFnIdCtz,
BuiltinFnIdClz, BuiltinFnIdClz,
BuiltinFnIdImport, BuiltinFnIdImport,
@ -1739,7 +1738,6 @@ enum IrInstructionId {
IrInstructionIdEnumTag, IrInstructionIdEnumTag,
IrInstructionIdClz, IrInstructionIdClz,
IrInstructionIdCtz, IrInstructionIdCtz,
IrInstructionIdGeneratedCode,
IrInstructionIdImport, IrInstructionIdImport,
IrInstructionIdCImport, IrInstructionIdCImport,
IrInstructionIdCInclude, IrInstructionIdCInclude,
@ -2153,12 +2151,6 @@ struct IrInstructionEnumTag {
IrInstruction *value; IrInstruction *value;
}; };
struct IrInstructionGeneratedCode {
IrInstruction base;
IrInstruction *value;
};
struct IrInstructionImport { struct IrInstructionImport {
IrInstruction base; IrInstruction base;

View File

@ -3007,7 +3007,6 @@ static LLVMValueRef ir_render_instruction(CodeGen *g, IrExecutable *executable,
case IrInstructionIdAlignOf: case IrInstructionIdAlignOf:
case IrInstructionIdFnProto: case IrInstructionIdFnProto:
case IrInstructionIdTestComptime: case IrInstructionIdTestComptime:
case IrInstructionIdGeneratedCode:
case IrInstructionIdCheckSwitchProngs: case IrInstructionIdCheckSwitchProngs:
case IrInstructionIdCheckStatementIsVoid: case IrInstructionIdCheckStatementIsVoid:
case IrInstructionIdTestType: case IrInstructionIdTestType:
@ -4413,7 +4412,6 @@ static void define_builtin_fns(CodeGen *g) {
create_builtin_fn(g, BuiltinFnIdCInclude, "cInclude", 1); create_builtin_fn(g, BuiltinFnIdCInclude, "cInclude", 1);
create_builtin_fn(g, BuiltinFnIdCDefine, "cDefine", 2); create_builtin_fn(g, BuiltinFnIdCDefine, "cDefine", 2);
create_builtin_fn(g, BuiltinFnIdCUndef, "cUndef", 1); create_builtin_fn(g, BuiltinFnIdCUndef, "cUndef", 1);
create_builtin_fn(g, BuiltinFnIdGeneratedCode, "generatedCode", 1);
create_builtin_fn(g, BuiltinFnIdCtz, "ctz", 1); create_builtin_fn(g, BuiltinFnIdCtz, "ctz", 1);
create_builtin_fn(g, BuiltinFnIdClz, "clz", 1); create_builtin_fn(g, BuiltinFnIdClz, "clz", 1);
create_builtin_fn(g, BuiltinFnIdImport, "import", 1); create_builtin_fn(g, BuiltinFnIdImport, "import", 1);

View File

@ -333,10 +333,6 @@ static constexpr IrInstructionId ir_instruction_id(IrInstructionEnumTag *) {
return IrInstructionIdEnumTag; return IrInstructionIdEnumTag;
} }
static constexpr IrInstructionId ir_instruction_id(IrInstructionGeneratedCode *) {
return IrInstructionIdGeneratedCode;
}
static constexpr IrInstructionId ir_instruction_id(IrInstructionImport *) { static constexpr IrInstructionId ir_instruction_id(IrInstructionImport *) {
return IrInstructionIdImport; return IrInstructionIdImport;
} }
@ -1435,17 +1431,6 @@ static IrInstruction *ir_build_enum_tag_from(IrBuilder *irb, IrInstruction *old_
return new_instruction; return new_instruction;
} }
static IrInstruction *ir_build_generated_code(IrBuilder *irb, Scope *scope, AstNode *source_node,
IrInstruction *value)
{
IrInstructionGeneratedCode *instruction = ir_build_instruction<IrInstructionGeneratedCode>(irb, scope, source_node);
instruction->value = value;
ir_ref_instruction(value, irb->current_basic_block);
return &instruction->base;
}
static IrInstruction *ir_build_import(IrBuilder *irb, Scope *scope, AstNode *source_node, IrInstruction *name) { static IrInstruction *ir_build_import(IrBuilder *irb, Scope *scope, AstNode *source_node, IrInstruction *name) {
IrInstructionImport *instruction = ir_build_instruction<IrInstructionImport>(irb, scope, source_node); IrInstructionImport *instruction = ir_build_instruction<IrInstructionImport>(irb, scope, source_node);
instruction->name = name; instruction->name = name;
@ -2466,13 +2451,6 @@ static IrInstruction *ir_instruction_ctz_get_dep(IrInstructionCtz *instruction,
} }
} }
static IrInstruction *ir_instruction_generatedcode_get_dep(IrInstructionGeneratedCode *instruction, size_t index) {
switch (index) {
case 0: return instruction->value;
default: return nullptr;
}
}
static IrInstruction *ir_instruction_import_get_dep(IrInstructionImport *instruction, size_t index) { static IrInstruction *ir_instruction_import_get_dep(IrInstructionImport *instruction, size_t index) {
switch (index) { switch (index) {
case 0: return instruction->name; case 0: return instruction->name;
@ -2964,8 +2942,6 @@ static IrInstruction *ir_instruction_get_dep(IrInstruction *instruction, size_t
return ir_instruction_clz_get_dep((IrInstructionClz *) instruction, index); return ir_instruction_clz_get_dep((IrInstructionClz *) instruction, index);
case IrInstructionIdCtz: case IrInstructionIdCtz:
return ir_instruction_ctz_get_dep((IrInstructionCtz *) instruction, index); return ir_instruction_ctz_get_dep((IrInstructionCtz *) instruction, index);
case IrInstructionIdGeneratedCode:
return ir_instruction_generatedcode_get_dep((IrInstructionGeneratedCode *) instruction, index);
case IrInstructionIdImport: case IrInstructionIdImport:
return ir_instruction_import_get_dep((IrInstructionImport *) instruction, index); return ir_instruction_import_get_dep((IrInstructionImport *) instruction, index);
case IrInstructionIdCImport: case IrInstructionIdCImport:
@ -3931,15 +3907,6 @@ static IrInstruction *ir_gen_builtin_fn_call(IrBuilder *irb, Scope *scope, AstNo
return ir_build_clz(irb, scope, node, arg0_value); return ir_build_clz(irb, scope, node, arg0_value);
} }
case BuiltinFnIdGeneratedCode:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
IrInstruction *arg0_value = ir_gen_node(irb, arg0_node, scope);
if (arg0_value == irb->codegen->invalid_instruction)
return arg0_value;
return ir_build_generated_code(irb, scope, node, arg0_value);
}
case BuiltinFnIdImport: case BuiltinFnIdImport:
{ {
AstNode *arg0_node = node->data.fn_call_expr.params.at(0); AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
@ -11227,25 +11194,6 @@ static TypeTableEntry *ir_analyze_instruction_enum_tag(IrAnalyze *ira, IrInstruc
return new_instruction->value.type; return new_instruction->value.type;
} }
static TypeTableEntry *ir_analyze_instruction_generated_code(IrAnalyze *ira, IrInstructionGeneratedCode *instruction) {
IrInstruction *value = instruction->value->other;
if (type_is_invalid(value->value.type))
return ira->codegen->builtin_types.entry_invalid;
if (instr_is_comptime(value)) {
ConstExprValue *val = ir_resolve_const(ira, value, UndefOk);
if (!val)
return ira->codegen->builtin_types.entry_invalid;
ConstExprValue *out_val = ir_build_const_from(ira, &instruction->base);
*out_val = *val;
return value->value.type;
}
instruction->base.other = value;
return value->value.type;
}
static TypeTableEntry *ir_analyze_instruction_import(IrAnalyze *ira, IrInstructionImport *import_instruction) { static TypeTableEntry *ir_analyze_instruction_import(IrAnalyze *ira, IrInstructionImport *import_instruction) {
IrInstruction *name_value = import_instruction->name->other; IrInstruction *name_value = import_instruction->name->other;
Buf *import_target_str = ir_resolve_str(ira, name_value); Buf *import_target_str = ir_resolve_str(ira, name_value);
@ -13362,8 +13310,6 @@ static TypeTableEntry *ir_analyze_instruction_nocast(IrAnalyze *ira, IrInstructi
return ir_analyze_instruction_switch_var(ira, (IrInstructionSwitchVar *)instruction); return ir_analyze_instruction_switch_var(ira, (IrInstructionSwitchVar *)instruction);
case IrInstructionIdEnumTag: case IrInstructionIdEnumTag:
return ir_analyze_instruction_enum_tag(ira, (IrInstructionEnumTag *)instruction); return ir_analyze_instruction_enum_tag(ira, (IrInstructionEnumTag *)instruction);
case IrInstructionIdGeneratedCode:
return ir_analyze_instruction_generated_code(ira, (IrInstructionGeneratedCode *)instruction);
case IrInstructionIdImport: case IrInstructionIdImport:
return ir_analyze_instruction_import(ira, (IrInstructionImport *)instruction); return ir_analyze_instruction_import(ira, (IrInstructionImport *)instruction);
case IrInstructionIdArrayLen: case IrInstructionIdArrayLen:
@ -13601,7 +13547,6 @@ bool ir_has_side_effects(IrInstruction *instruction) {
case IrInstructionIdSwitchVar: case IrInstructionIdSwitchVar:
case IrInstructionIdSwitchTarget: case IrInstructionIdSwitchTarget:
case IrInstructionIdEnumTag: case IrInstructionIdEnumTag:
case IrInstructionIdGeneratedCode:
case IrInstructionIdRef: case IrInstructionIdRef:
case IrInstructionIdMinValue: case IrInstructionIdMinValue:
case IrInstructionIdMaxValue: case IrInstructionIdMaxValue:

View File

@ -481,12 +481,6 @@ static void ir_print_enum_tag(IrPrint *irp, IrInstructionEnumTag *instruction) {
ir_print_other_instruction(irp, instruction->value); ir_print_other_instruction(irp, instruction->value);
} }
static void ir_print_generated_code(IrPrint *irp, IrInstructionGeneratedCode *instruction) {
fprintf(irp->f, "@generatedCode(");
ir_print_other_instruction(irp, instruction->value);
fprintf(irp->f, ")");
}
static void ir_print_import(IrPrint *irp, IrInstructionImport *instruction) { static void ir_print_import(IrPrint *irp, IrInstructionImport *instruction) {
fprintf(irp->f, "@import("); fprintf(irp->f, "@import(");
ir_print_other_instruction(irp, instruction->name); ir_print_other_instruction(irp, instruction->name);
@ -1011,9 +1005,6 @@ static void ir_print_instruction(IrPrint *irp, IrInstruction *instruction) {
case IrInstructionIdEnumTag: case IrInstructionIdEnumTag:
ir_print_enum_tag(irp, (IrInstructionEnumTag *)instruction); ir_print_enum_tag(irp, (IrInstructionEnumTag *)instruction);
break; break;
case IrInstructionIdGeneratedCode:
ir_print_generated_code(irp, (IrInstructionGeneratedCode *)instruction);
break;
case IrInstructionIdImport: case IrInstructionIdImport:
ir_print_import(irp, (IrInstructionImport *)instruction); ir_print_import(irp, (IrInstructionImport *)instruction);
break; break;

View File

@ -1,7 +1,7 @@
const assert = @import("std").debug.assert; const assert = @import("std").debug.assert;
test "nullableType" { test "nullableType" {
const x : ?bool = @generatedCode(true); const x : ?bool = true;
if (x) |y| { if (x) |y| {
if (y) { if (y) {
@ -13,13 +13,13 @@ test "nullableType" {
unreachable; unreachable;
} }
const next_x : ?i32 = @generatedCode(null); const next_x : ?i32 = null;
const z = next_x ?? 1234; const z = next_x ?? 1234;
assert(z == 1234); assert(z == 1234);
const final_x : ?i32 = @generatedCode(13); const final_x : ?i32 = 13;
const num = final_x ?? unreachable; const num = final_x ?? unreachable;
@ -38,7 +38,7 @@ test "test maybe object and get a pointer to the inner value" {
test "rhsMaybeUnwrapReturn" { test "rhsMaybeUnwrapReturn" {
const x: ?bool = @generatedCode(true); const x: ?bool = true;
const y = x ?? return; const y = x ?? return;
} }