Skip to content

Stablize variable typing and support integer truncation and sign extension #201

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 7 commits into
base: master
Choose a base branch
from

Conversation

ChAoSUnItY
Copy link
Collaborator

@ChAoSUnItY ChAoSUnItY commented May 13, 2025

This is a attempt to support variable typing for all local variables (including synthesized ones) so that integer truncation and sign extension could be implemented, which targets to fix #166.

Notice that there's still some works including type derivation from operators and code cleanup.

About sign extension in rv32

It seems that package qemu-user is currently outdated (6.2.0) so Zbb extension is not supported, which results in the implementation of sign extension in rv32 currently using straightforward way to implement, that is bitwise shifting.

Summary by Bito

This pull request significantly enhances the variable typing system by introducing support for integer truncation and sign extension, improving local variable management, and optimizing data structures. It addresses existing variable handling issues and lays the groundwork for future enhancements in type derivation and memory management.

Unit tests added: True

Estimated effort to review (1-5, lower is better): 2

@jserv jserv requested review from DrXiao and vacantron and removed request for DrXiao May 13, 2025 13:24
@sysprog21 sysprog21 deleted a comment from bito-code-review bot May 13, 2025
@ChAoSUnItY
Copy link
Collaborator Author

Regards to the issue of sign extension on rv32 backend, should we introduce a compiler parameter -Zbb to allow user to choose whether generate sign extension instruction with sext.b (or sext.h in the future once short type is implemented) or with bitwise shifts?

@jserv
Copy link
Collaborator

jserv commented May 14, 2025

Regards to the issue of sign extension on rv32 backend, should we introduce a compiler parameter -Zbb to allow user to choose whether generate sign extension instruction with sext.b (or sext.h in the future once short type is implemented) or with bitwise shifts?

It is a good idea. However, we then need to an effective way to select the extensions for RISC-V backend.

@ChAoSUnItY ChAoSUnItY marked this pull request as ready for review May 14, 2025 11:58
@sysprog21 sysprog21 deleted a comment from bito-code-review bot May 15, 2025
@@ -1018,6 +1016,14 @@ void global_release()
strbuf_free(elf_section);
}

/* Reports an error without specifying a position */
void error_no_loc(char *msg)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's rename it to fatal. Such helper functions should be always having shorter names.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Certain operations lack consideration for data types
3 participants