Skip to content

Commit

Permalink
Test leaking memory through cycles
Browse files Browse the repository at this point in the history
  • Loading branch information
kiryk committed Nov 8, 2023
1 parent 2a57ead commit cf7105f
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 0 deletions.
22 changes: 22 additions & 0 deletions test_regress/t/t_leak_mem.pl
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/usr/bin/env perl
if (!$::Driver) { use FindBin; exec("$FindBin::Bin/bootstrap.pl", @ARGV, $0); die; }
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
#
# Copyright 2023 by Wilson Snyder. This program is free software; you
# can redistribute it and/or modify it under the terms of either the GNU
# Lesser General Public License Version 3 or the Perl Artistic License
# Version 2.0.
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0

scenarios(simulator => 1);

compile(
verilator_flags2 => ["--exe --main --timing"],
);

execute(
check_finished => 1,
);

ok(1);
1;
32 changes: 32 additions & 0 deletions test_regress/t/t_leak_mem.v
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// DESCRIPTION: Verilator: memory management test
//
// This file ONLY is placed under the Creative Commons Public Domain, for
// any use, without warranty, 2023 by Antmicro Ltd.
// SPDX-License-Identifier: CC0-1.0

typedef class Cls;

class Ref;
Ref r;

function void set(Ref obj);
r = obj;
endfunction

function Ref get();
return r;
endfunction
endclass

module t;
Ref cycle;

initial begin
for (integer i = 0; i < 100000; i++) begin
cycle = new;
cycle.set(cycle);
end
$write("*-* All Finished *-*\n");
$finish;
end
endmodule

0 comments on commit cf7105f

Please sign in to comment.