forked from OSchip/llvm-project
[RISCV] Change function alignment to 4 bytes, and 2 bytes for RVC
Summary: According RISC-V ELF psABI specification, base RV32 and RV64 ISAs only allow 32-bit instruction alignment, but instruction allow to be aligned to 16-bit boundaries for C-extension. So we just align to 4 bytes and 2 bytes for C-extension is enough. Reviewers: asb, apazos Differential Revision: https://reviews.llvm.org/D45560 Patch by Kito Cheng. llvm-svn: 329899
This commit is contained in:
parent
69e0e8e3d4
commit
b48b027d05
|
@ -142,8 +142,9 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
|
|||
setBooleanContents(ZeroOrOneBooleanContent);
|
||||
|
||||
// Function alignments (log2).
|
||||
setMinFunctionAlignment(3);
|
||||
setPrefFunctionAlignment(3);
|
||||
unsigned FunctionAlignment = Subtarget.hasStdExtC() ? 1 : 2;
|
||||
setMinFunctionAlignment(FunctionAlignment);
|
||||
setPrefFunctionAlignment(FunctionAlignment);
|
||||
|
||||
// Effectively disable jump table generation.
|
||||
setMinimumJumpTableEntries(INT_MAX);
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s \
|
||||
; RUN: | FileCheck %s -check-prefix=RV32I
|
||||
; RUN: llc -mtriple=riscv32 -mattr=+c -verify-machineinstrs < %s \
|
||||
; RUN: | FileCheck %s -check-prefix=RV32C
|
||||
|
||||
define void @foo() {
|
||||
;RV32I: .p2align 2
|
||||
;RV32I: foo:
|
||||
;RV32C: .p2align 1
|
||||
;RV32C: foo:
|
||||
entry:
|
||||
ret void
|
||||
}
|
Loading…
Reference in New Issue