aboutsummaryrefslogtreecommitdiff
path: root/src/Compilation.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2020-12-28 11:24:53 -0700
committerAndrew Kelley <andrew@ziglang.org>2020-12-28 11:24:53 -0700
commitf75d4cbe56f9f8212581f00700600a57ce545ba1 (patch)
tree9061ca185cd38119116333c4fee9f5d26a0619dc /src/Compilation.zig
parent7ed499ec4549fa7304b822446b23cff993b8fa6f (diff)
downloadzig-f75d4cbe56f9f8212581f00700600a57ce545ba1.tar.gz
zig-f75d4cbe56f9f8212581f00700600a57ce545ba1.zip
Revert "stage2: add compile log statement (#7191)"
The addition of `addDeclErr` introduced a memory leak at every call site, and I also would like to push back on having more than 1 compilation error per `Decl`. This reverts commit 1634d45f1d53c8d7bfefa56ab4d2fa4cc8218b6d.
Diffstat (limited to 'src/Compilation.zig')
-rw-r--r--src/Compilation.zig25
1 files changed, 12 insertions, 13 deletions
diff --git a/src/Compilation.zig b/src/Compilation.zig
index 6b5ae3abed..885ecbb95c 100644
--- a/src/Compilation.zig
+++ b/src/Compilation.zig
@@ -1350,11 +1350,8 @@ pub fn totalErrorCount(self: *Compilation) usize {
var total: usize = self.failed_c_objects.items().len;
if (self.bin_file.options.module) |module| {
- for (module.failed_decls.items()) |entry| {
- assert(entry.value.items.len > 0);
- total += entry.value.items.len;
- }
- total += module.failed_exports.items().len +
+ total += module.failed_decls.items().len +
+ module.failed_exports.items().len +
module.failed_files.items().len +
@boolToInt(module.failed_root_src_file != null);
}
@@ -1388,11 +1385,9 @@ pub fn getAllErrorsAlloc(self: *Compilation) !AllErrors {
}
for (module.failed_decls.items()) |entry| {
const decl = entry.key;
- const err_msg_list = entry.value;
- for (err_msg_list.items) |err_msg| {
- const source = try decl.scope.getSource(module);
- try AllErrors.add(&arena, &errors, decl.scope.subFilePath(), source, err_msg.*);
- }
+ const err_msg = entry.value;
+ const source = try decl.scope.getSource(module);
+ try AllErrors.add(&arena, &errors, decl.scope.subFilePath(), source, err_msg.*);
}
for (module.failed_exports.items()) |entry| {
const decl = entry.key.owner_decl;
@@ -1485,6 +1480,7 @@ pub fn performAllTheWork(self: *Compilation) error{ TimerUnsupported, OutOfMemor
}
assert(decl.typed_value.most_recent.typed_value.ty.hasCodeGenBits());
+
self.bin_file.updateDecl(module, decl) catch |err| {
switch (err) {
error.OutOfMemory => return error.OutOfMemory,
@@ -1492,7 +1488,8 @@ pub fn performAllTheWork(self: *Compilation) error{ TimerUnsupported, OutOfMemor
decl.analysis = .dependency_failure;
},
else => {
- try module.addDeclErr(decl, try ErrorMsg.create(
+ try module.failed_decls.ensureCapacity(module.gpa, module.failed_decls.items().len + 1);
+ module.failed_decls.putAssumeCapacityNoClobber(decl, try ErrorMsg.create(
module.gpa,
decl.src(),
"unable to codegen: {}",
@@ -1511,7 +1508,8 @@ pub fn performAllTheWork(self: *Compilation) error{ TimerUnsupported, OutOfMemor
decl.analysis = .dependency_failure;
},
else => {
- try module.addDeclErr(decl, try ErrorMsg.create(
+ try module.failed_decls.ensureCapacity(module.gpa, module.failed_decls.items().len + 1);
+ module.failed_decls.putAssumeCapacityNoClobber(decl, try ErrorMsg.create(
module.gpa,
decl.src(),
"unable to generate C header: {}",
@@ -1533,7 +1531,8 @@ pub fn performAllTheWork(self: *Compilation) error{ TimerUnsupported, OutOfMemor
.update_line_number => |decl| {
const module = self.bin_file.options.module.?;
self.bin_file.updateDeclLineNumber(module, decl) catch |err| {
- try module.addDeclErr(decl, try ErrorMsg.create(
+ try module.failed_decls.ensureCapacity(module.gpa, module.failed_decls.items().len + 1);
+ module.failed_decls.putAssumeCapacityNoClobber(decl, try ErrorMsg.create(
module.gpa,
decl.src(),
"unable to update line number: {}",