google / google/xls

JIT duplicates body of non-entry functions

Open
#225 1 comment 0 reactions 2 assignees Claimed by @nanavati View on GitHub
bug jit
Dominant language
C++
Stars
1.9k
Forks
283
Avg merge
2d 10h
Merged PRs (30d)
135

Description

When a function has multiple callers the body is duplicated in the JIT. Example:define i1 @test(i7 %x0, i64 %_2) {
so_basic:
%invoke_198 = call i27 @"sample::____sample__main_counted_for_0_body"(i4 0, i27 16777216, i64 %_2)
%invoke_200 = call i27 @"sample::____sample__main_counted_for_0_body"(i4 0, i27 %invoke_198, i64 %_2)
%invoke_202 = call i27 @"sample::____sample__main_counted_for_0_body"(i4 0, i27 %invoke_200, i64 %_2)
%invoke_204 = call i27 @"sample::____sample__main_counted_for_0_body"(i4 0, i27 %invoke_202, i64 %_2)
%invoke_206 = call i27 @"sample::____sample__main_counted_for_0_body"(i4 0, i27 %invoke_204, i64 %_2)
%x5 = call i27 @"sample::____sample__main_counted_for_0_body"(i4 0, i27 %invoke_206, i64 %_2)
...
}

define i27 @"sample::____sample__main_counted_for_0_body"(i4 %i, i27 %x, i64 %_0) {
so_basic:
ret i27 %x

so_basic1: ; No predecessors!
ret i27 %x

so_basic2: ; No predecessors!
ret i27 %x

so_basic3: ; No predecessors!
ret i27 %x

so_basic4: ; No predecessors!
ret i27 %x

so_basic5: ; No predecessors!
ret i27 %x

so_basic6: ; No predecessors!
ret i27 %x

so_basic7: ; No predecessors!
ret i27 %x

so_basic8: ; No predecessors!
ret i27 %x

so_basic9: ; No predecessors!
ret i27 %x

so_basic10: ; No predecessors!
ret i27 %x

so_basic11: ; No predecessors!
ret i27 %x
}

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.