Skip to content
This repository was archived by the owner on Sep 2, 2018. It is now read-only.

Commit 5f12f20

Browse files
author
Dylan McKay
committed
[AVR] Update data layout alignments
This causes all types to have minimum alignments of their size.
1 parent b4df1e7 commit 5f12f20

File tree

4 files changed

+10
-8
lines changed

4 files changed

+10
-8
lines changed

lib/Target/AVR/AVRTargetMachine.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525

2626
namespace llvm {
2727

28+
static const char *AVRDataLayout = "e-p:16:16:16-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-n8";
29+
2830
/// Processes a CPU name.
2931
static StringRef getCPU(StringRef CPU) {
3032
if (CPU.empty() || CPU == "generic") {
@@ -44,7 +46,7 @@ AVRTargetMachine::AVRTargetMachine(const Target &T, const Triple &TT,
4446
Optional<Reloc::Model> RM, CodeModel::Model CM,
4547
CodeGenOpt::Level OL)
4648
: LLVMTargetMachine(
47-
T, "e-p:16:8:8-i8:8:8-i16:8:8-i32:8:8-i64:8:8-f32:8:8-f64:8:8-n8", TT,
49+
T, AVRDataLayout, TT,
4850
getCPU(CPU), FS, Options, getEffectiveRelocModel(RM), CM, OL),
4951
SubTarget(TT, getCPU(CPU), FS, *this) {
5052
this->TLOF = make_unique<AVRTargetObjectFile>();

test/CodeGen/AVR/call.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ define i8 @calli8_reg() {
3030

3131
define i8 @calli8_stack() {
3232
; CHECK-LABEL: calli8_stack:
33-
; CHECK: ldi [[REG1:r[0-9]+]], 10
34-
; CHECK: ldi [[REG2:r[0-9]+]], 11
35-
; CHECK: push [[REG2]]
33+
; CHECK: ldi [[REG1:r[0-9]+]], 11
34+
; CHECK: push [[REG1]]
35+
; CHECK: ldi [[REG1]], 10
3636
; CHECK: push [[REG1]]
3737
; CHECK: call foo8_3
3838
%result1 = call i8 @foo8_3(i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11)
@@ -141,7 +141,7 @@ define void @testcallprologue() {
141141
; CHECK-LABEL: testcallprologue:
142142
; CHECK: push r28
143143
; CHECK: push r29
144-
; CHECK: sbiw r28, 27
144+
; CHECK: sbiw r28, 28
145145
; CHECK: ldi [[REG1:r[0-9]+]], 88
146146
; CHECK: std Y+9, [[REG1]]
147147
; CHECK: ldi [[REG1:r[0-9]+]], 11

test/CodeGen/AVR/directmem.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ define i8 @global8_load() {
3434
define void @array8_store() {
3535
; CHECK-LABEL: array8_store:
3636
; CHECK: ldi [[REG1:r[0-9]+]], 1
37+
; CHECK: sts char.array, [[REG1]]
3738
; CHECK: ldi [[REG2:r[0-9]+]], 2
3839
; CHECK: sts char.array+1, [[REG2]]
39-
; CHECK: sts char.array, [[REG1]]
4040
; CHECK: ldi [[REG:r[0-9]+]], 3
4141
; CHECK: sts char.array+2, [[REG]]
4242
store i8 1, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @char.array, i32 0, i64 0)

test/CodeGen/AVR/varargs.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ define i16 @varargs1(i8* nocapture %x, ...) {
2727

2828
define i16 @varargs2(i8* nocapture %x, ...) {
2929
; CHECK-LABEL: varargs2:
30-
; CHECK: ldd r24, Y+9
31-
; CHECK: ldd r25, Y+10
30+
; CHECK: ld r24, Z
31+
; CHECK: ldd r25, Z+1
3232
%ap = alloca i8*
3333
%ap1 = bitcast i8** %ap to i8*
3434
call void @llvm.va_start(i8* %ap1)

0 commit comments

Comments
 (0)