[AVR] Use 1-byte alignment for all data types
authorDylan McKay <me@dylanmckay.io>
Tue, 26 Sep 2017 00:45:27 +0000 (00:45 +0000)
committerDylan McKay <me@dylanmckay.io>
Tue, 26 Sep 2017 00:45:27 +0000 (00:45 +0000)
This was an oversight in the original backend data layout.

The AVR architecture does not have the concept of unaligned loads - all
loads/stores from all addresses are aligned to one byte.

Discovered in avr-rust issue #64
https://github.com/avr-rust/rust/issues/64

Patch By Gergo Erdi.

llvm-svn: 314179

llvm/lib/Target/AVR/AVRTargetMachine.cpp

index 9865a79..f9a738b 100644 (file)
@@ -25,7 +25,7 @@
 
 namespace llvm {
 
-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";
+static const char *AVRDataLayout = "e-p:16:8-i8:8-i16:8-i32:8-i64:8-f32:8-f64:8-n8-a:8";
 
 /// Processes a CPU name.
 static StringRef getCPU(StringRef CPU) {