Commit fdf4c875ff

Veikka Tuominen <git@vexu.eu>
2022-09-23 16:09:21
llvm: avoid crash on duplicate asm input/output name
1 parent 3525b87
Changed files (1)
src
codegen
src/codegen/llvm.zig
@@ -5972,7 +5972,9 @@ pub const FuncGen = struct {
             }
 
             if (!std.mem.eql(u8, name, "_")) {
-                name_map.putAssumeCapacityNoClobber(name, total_i);
+                const gop = name_map.getOrPutAssumeCapacity(name);
+                if (gop.found_existing) return self.todo("duplicate asm output name '{s}'", .{name});
+                gop.value_ptr.* = total_i;
             }
             total_i += 1;
         }
@@ -6028,7 +6030,9 @@ pub const FuncGen = struct {
             }
 
             if (!std.mem.eql(u8, name, "_")) {
-                name_map.putAssumeCapacityNoClobber(name, total_i);
+                const gop = name_map.getOrPutAssumeCapacity(name);
+                if (gop.found_existing) return self.todo("duplicate asm input name '{s}'", .{name});
+                gop.value_ptr.* = total_i;
             }
 
             // In the case of indirect inputs, LLVM requires the callsite to have