-
Notifications
You must be signed in to change notification settings - Fork 14.6k
[RISCV] Implement multi-lib reuse rule for RISC-V bare-metal toolchain #73765
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
Conversation
@llvm/pr-subscribers-clang @llvm/pr-subscribers-clang-driver Author: Brandon Wu (4vtomat) ChangesExtend the multi-lib re-use selection mechanism for RISC-V.
Full diff: https://github.com/llvm/llvm-project/pull/73765.diff 6 Files Affected:
|
@llvm/pr-subscribers-backend-risc-v Author: Brandon Wu (4vtomat) ChangesExtend the multi-lib re-use selection mechanism for RISC-V.
Full diff: https://github.com/llvm/llvm-project/pull/73765.diff 6 Files Affected:
|
4f6500b
to
c406872
Compare
c406872
to
fb09422
Compare
Resolved the comments and also fixed the typo of the commit messages. |
Extend the multi-lib re-use selection mechanism for RISC-V. This function will try to re-use multi-lib if they are compatible. Definition of compatible: - ABI must be the same. - multi-lib is a subset of current arch, e.g. multi-lib=march=rv32im is a subset of march=rv32imc. - march that contains atomic extension can't reuse multi-lib that doesn't have atomic, vice versa. e.g. multi-lib=march=rv32im and march=rv32ima are not compatible, because software and hardware atomic operation can't work together correctly.
fb09422
to
007fc93
Compare
007fc93
to
6caf21f
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
The new test is crashing in my Release+Asserts build:
|
Hello, looks like it broke some bots too: |
#75789) …toolchain (#73765)" This reverts commit 111a229, as it broke several bots https://lab.llvm.org/buildbot/#/builders/245/builds/18162 https://lab.llvm.org/buildbot/#/builders/188/builds/39436 https://lab.llvm.org/buildbot/#/builders/187/builds/13723 https://lab.llvm.org/buildbot/#/builders/182/builds/8449 https://lab.llvm.org/buildbot/#/builders/198/builds/7438 https://lab.llvm.org/buildbot/#/builders/176/builds/7419 https://lab.llvm.org/buildbot/#/builders/186/builds/13781 https://lab.llvm.org/buildbot/#/builders/183/builds/18116 https://lab.llvm.org/buildbot/#/builders/197/builds/11410 https://lab.llvm.org/buildbot/#/builders/184/builds/8651 When reapplying, please take care of another commit that have been merged after this one: c7cdf3c [clang] Use 'starts_with' instead of 'startswith' in Gnu.cpp (NFC)
… toolchain (llvm#73765) Extend the multi-lib re-use selection mechanism for RISC-V. This funciton will try to re-use multi-lib if they are compatible. Definition of compatible: - ABI must be the same. - multi-lib is a subset of current arch, e.g. multi-lib=march=rv32im is a subset of march=rv32imc. - march that contains atomic extension can't reuse multi-lib that doesn't has atomic, vice versa. e.g. multi-lib=march=rv32im and march=rv32ima are not compatible, because software and hardware atomic operation can't work together correctly.
…e-metal toolchain (llvm#73765)
… toolchain (#73765) (#75890) Extend the multi-lib re-use selection mechanism for RISC-V. This funciton will try to re-use multi-lib if they are compatible. Definition of compatible: - ABI must be the same. - multi-lib is a subset of current arch, e.g. multi-lib=march=rv32im is a subset of march=rv32imc. - march that contains atomic extension can't reuse multi-lib that doesn't has atomic, vice versa. e.g. multi-lib=march=rv32im and march=rv32ima are not compatible, because software and hardware atomic operation can't work together correctly.
Extend the multi-lib re-use selection mechanism for RISC-V.
This funciton will try to re-use multi-lib if they are compatible.
Definition of compatible:
is a subset of march=rv32imc.
doesn't has atomic, vice versa. e.g. multi-lib=march=rv32im and
march=rv32ima are not compatible, because software and hardware
atomic operation can't work together correctly.