using namespace llvm;
+unsigned
+RISCVMCObjectFileInfo::getTextSectionAlignment(const MCSubtargetInfo &STI) {
+ bool RVC = STI.hasFeature(RISCV::FeatureStdExtC) ||
+ STI.hasFeature(RISCV::FeatureStdExtZca);
+ return RVC ? 2 : 4;
+}
+
unsigned RISCVMCObjectFileInfo::getTextSectionAlignment() const {
- const MCSubtargetInfo *STI = getContext().getSubtargetInfo();
- return (STI->hasFeature(RISCV::FeatureStdExtC) ||
- STI->hasFeature(RISCV::FeatureStdExtZca))
- ? 2
- : 4;
+ return getTextSectionAlignment(*getContext().getSubtargetInfo());
}
#define LLVM_LIB_TARGET_RISCV_MCTARGETDESC_RISCVMCOBJECTFILEINFO_H
#include "llvm/MC/MCObjectFileInfo.h"
+#include "llvm/MC/MCSubtargetInfo.h"
namespace llvm {
class RISCVMCObjectFileInfo : public MCObjectFileInfo {
public:
+ static unsigned getTextSectionAlignment(const MCSubtargetInfo &STI);
unsigned getTextSectionAlignment() const override;
};
//===----------------------------------------------------------------------===//
#include "RISCVTargetObjectFile.h"
+#include "MCTargetDesc/RISCVMCObjectFileInfo.h"
#include "RISCVTargetMachine.h"
#include "llvm/BinaryFormat/ELF.h"
#include "llvm/MC/MCContext.h"
using namespace llvm;
+unsigned RISCVELFTargetObjectFile::getTextSectionAlignment() const {
+ return RISCVMCObjectFileInfo::getTextSectionAlignment(
+ *getContext().getSubtargetInfo());
+}
+
void RISCVELFTargetObjectFile::Initialize(MCContext &Ctx,
const TargetMachine &TM) {
TargetLoweringObjectFileELF::Initialize(Ctx, TM);
unsigned SSThreshold = 8;
public:
+ unsigned getTextSectionAlignment() const override;
+
void Initialize(MCContext &Ctx, const TargetMachine &TM) override;
/// Return true if this global address should be placed into small data/bss
; RUN: | FileCheck %s -check-prefix=RV32I
; RUN: llc -mtriple=riscv32 -mattr=+c -verify-machineinstrs < %s \
; RUN: | FileCheck %s -check-prefix=RV32C
+; RUN: llc -filetype=obj -mtriple=riscv32 < %s -o %t
+; RUN: llvm-readelf -S %t | FileCheck %s --check-prefixes=SEC,SEC-I
+; RUN: llc -filetype=obj -mtriple=riscv32 -mattr=+c < %s -o %t
+; RUN: llvm-readelf -S %t | FileCheck %s --check-prefixes=SEC,SEC-C
+
+; SEC: Name Type Address Off Size ES Flg Lk Inf Al
+; SEC-I: .text PROGBITS 00000000 [[#%x,]] [[#%x,]] 00 AX 0 0 4
+; SEC-C: .text PROGBITS 00000000 [[#%x,]] [[#%x,]] 00 AX 0 0 2
define void @foo() {
;RV32I: .p2align 2