Skip to content

Commit df98377

Browse files
committed
[Xtensa] Fix i8/i16 ABI alignment.
Set 32-bit alignmnet for i8 and i16 types.
1 parent 5ae577d commit df98377

File tree

3 files changed

+10
-3
lines changed

3 files changed

+10
-3
lines changed

clang/lib/Basic/Targets/Xtensa.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class LLVM_LIBRARY_VISIBILITY XtensaTargetInfo : public TargetInfo {
5050
WIntType = UnsignedInt;
5151
UseZeroLengthBitfieldAlignment = true;
5252
MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 32;
53-
resetDataLayout("e-m:e-p:32:32-i8:8:32-i16:16:32-i64:64-i128:128-n32");
53+
resetDataLayout("e-m:e-p:32:32-i64:64-i128:128-n32");
5454
}
5555

5656
void getTargetDefines(const LangOptions &Opts,

llvm/lib/Target/Xtensa/XtensaISelLowering.cpp

+8-1
Original file line numberDiff line numberDiff line change
@@ -732,7 +732,14 @@ static bool CC_Xtensa_Custom(unsigned ValNo, MVT ValVT, MVT LocVT,
732732

733733
if (ArgFlags.isByVal()) {
734734
Align ByValAlign = ArgFlags.getNonZeroByValAlign();
735-
unsigned Offset = State.AllocateStack(ArgFlags.getByValSize(), ByValAlign);
735+
unsigned ByValSize = ArgFlags.getByValSize();
736+
if (ByValSize < 4) {
737+
ByValSize = 4;
738+
}
739+
if (ByValAlign < Align(4)) {
740+
ByValAlign = Align(4);
741+
}
742+
unsigned Offset = State.AllocateStack(ByValSize, ByValAlign);
736743
State.addLoc(CCValAssign::getMem(ValNo, ValVT, Offset, LocVT, LocInfo));
737744
// Allocate rest of registers, because rest part is not used to pass
738745
// arguments

llvm/lib/Target/Xtensa/XtensaTargetMachine.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeXtensaTarget() {
3636
static std::string computeDataLayout(const Triple &TT, StringRef CPU,
3737
const TargetOptions &Options,
3838
bool IsLittle) {
39-
std::string Ret = "e-m:e-p:32:32-i8:8:32-i16:16:32-i64:64-i128:128-n32";
39+
std::string Ret = "e-m:e-p:32:32-i64:64-i128:128-n32";
4040
return Ret;
4141
}
4242

0 commit comments

Comments
 (0)