Commit 3ec766abe3

Andrew Kelley <andrew@ziglang.org>
2019-06-09 16:46:13
remove ResultLocField dead code
1 parent 771e889
Changed files (3)
src/all_types.hpp
@@ -3588,7 +3588,6 @@ enum ResultLocId {
     ResultLocIdInvalid,
     ResultLocIdNone,
     ResultLocIdVar,
-    ResultLocIdField,
     ResultLocIdReturn,
     ResultLocIdPeer,
     ResultLocIdPeerParent,
@@ -3615,14 +3614,6 @@ struct ResultLocVar {
     ZigVar *var;
 };
 
-struct ResultLocField {
-    ResultLoc base;
-
-    ResultLoc *parent;
-    Buf *name;
-    IrInstruction *container_type;
-};
-
 struct ResultLocReturn {
     ResultLoc base;
 };
src/ir.cpp
@@ -14504,28 +14504,6 @@ static ZigType *ir_result_loc_expected_type(IrAnalyze *ira, IrInstruction *suspe
             return nullptr;
         case ResultLocIdInstruction:
             return result_loc->source_instruction->child->value.type;
-        case ResultLocIdField: {
-            if (result_loc->resolved_loc != nullptr) {
-                ZigType *ptr_type = result_loc->resolved_loc->value.type;
-                assert(ptr_type->id == ZigTypeIdPointer);
-                return ptr_type->data.pointer.child_type;
-            }
-            ResultLocField *result_loc_field = reinterpret_cast<ResultLocField *>(result_loc);
-            ZigType *container_type = ir_resolve_type(ira, result_loc_field->container_type->child);
-            if (type_is_invalid(container_type))
-                return ira->codegen->builtin_types.entry_invalid;
-            if (container_type->id == ZigTypeIdStruct) {
-                TypeStructField *field = find_struct_type_field(container_type, result_loc_field->name);
-                if (field == nullptr) {
-                    return ira->codegen->builtin_types.entry_invalid;
-                }
-                return field->type_entry;
-            } else if (container_type->id == ZigTypeIdUnion) {
-                zig_panic("TODO");
-            } else {
-                zig_unreachable();
-            }
-        }
         case ResultLocIdReturn:
             return ira->explicit_return_type;
         case ResultLocIdPeer:
@@ -14606,26 +14584,6 @@ static IrInstruction *ir_resolve_result(IrAnalyze *ira, IrInstruction *suspend_s
             result_loc->resolved_loc = result_loc->source_instruction->child;
             return result_loc->resolved_loc;
         }
-        case ResultLocIdField: {
-            ResultLocField *result_loc_field = reinterpret_cast<ResultLocField *>(result_loc);
-
-            ZigType *container_type = ir_resolve_type(ira, result_loc_field->container_type->child);
-            if (type_is_invalid(container_type))
-                return ira->codegen->invalid_instruction;
-
-            IrInstruction *parent_result_loc = ir_resolve_result(ira, suspend_source_instr,
-                    result_loc_field->parent, container_type, nullptr);
-            if (parent_result_loc == nullptr || type_is_invalid(parent_result_loc->value.type) ||
-                parent_result_loc->value.type->id == ZigTypeIdUnreachable)
-            {
-                return parent_result_loc;
-            }
-
-            result_loc->written = true;
-            result_loc->resolved_loc = ir_analyze_container_field_ptr(ira, result_loc_field->name,
-                    suspend_source_instr, parent_result_loc, container_type);
-            return result_loc->resolved_loc;
-        }
         case ResultLocIdReturn: {
             bool is_comptime = value != nullptr && value->value.special != ConstValSpecialRuntime;
             if (is_comptime) return nullptr;
src/ir_print.cpp
@@ -213,12 +213,6 @@ static void ir_print_result_loc_instruction(IrPrint *irp, ResultLocInstruction *
     fprintf(irp->f, ")");
 }
 
-static void ir_print_result_loc_field(IrPrint *irp, ResultLocField *result_loc_field) {
-    fprintf(irp->f, "field(name=%s,type=", buf_ptr(result_loc_field->name));
-    ir_print_other_instruction(irp, result_loc_field->container_type);
-    fprintf(irp->f, ")");
-}
-
 static void ir_print_result_loc_peer(IrPrint *irp, ResultLocPeer *result_loc_peer) {
     fprintf(irp->f, "peer(next=");
     ir_print_other_block(irp, result_loc_peer->next_bb);
@@ -239,8 +233,6 @@ static void ir_print_result_loc(IrPrint *irp, ResultLoc *result_loc) {
             return ir_print_result_loc_var(irp, (ResultLocVar *)result_loc);
         case ResultLocIdInstruction:
             return ir_print_result_loc_instruction(irp, (ResultLocInstruction *)result_loc);
-        case ResultLocIdField:
-            return ir_print_result_loc_field(irp, (ResultLocField *)result_loc);
         case ResultLocIdPeer:
             return ir_print_result_loc_peer(irp, (ResultLocPeer *)result_loc);
         case ResultLocIdPeerParent: