Ayke van Laethem 4add249205
[AVR] Add support for the -mdouble=x flag
This flag is used by avr-gcc (starting with v10) to set the width of the
double type. The double type is by default interpreted as a 32-bit
floating point number in avr-gcc instead of a 64-bit floating point
number as is common on other architectures. Starting with GCC 10, a new
option has been added to control this behavior:
https://gcc.gnu.org/wiki/avr-gcc#Deviations_from_the_Standard

This commit keeps the default double at 32 bits but adds support for the
-mdouble flag (-mdouble=32 and -mdouble=64) to control this behavior.

Differential Revision: https://reviews.llvm.org/D76181
2020-03-17 13:21:03 +01:00

14 lines
530 B
C

// RUN: %clang_cc1 %s -emit-llvm -o - -triple=avr-unknown-unknown -mdouble=64 | \
// RUN: FileCheck --check-prefix=AVR-FP64 %s
// RUN: %clang_cc1 %s -emit-llvm -o - -triple=avr-unknown-unknown -mdouble=32 | \
// RUN: FileCheck --check-prefix=AVR-FP32 %s
double x = 0;
int size = sizeof(x);
// FIXME: the double should have an alignment of 1 on AVR, not 4 or 8.
// AVR-FP64: @x = global double {{.*}}, align 8
// AVR-FP64: @size = global i16 8
// AVR-FP32: @x = global float {{.*}}, align 4
// AVR-FP32: @size = global i16 4