aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/arm/pr94743-1-soft.c
blob: e06a16d166cac7d71436b5f251ded4fd8057c987 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/* PR target/94743 */
/* { dg-do compile } */
/* Thumb1 mode not supported for interrupt routines.  */
/* { dg-require-effective-target arm32 } */
/* { dg-skip-if "do not override -mfloat-abi" { *-*-* } { "-mfloat-abi=*" } {"-mfloat-abi=soft" } } */
/* { dg-options "-mfloat-abi=soft" } */

/* Check that we do not emit a warning when compiling an IRQ handler without
   -mgeneral-regs-only with -mfloat-abi=soft.  */
typedef struct {
  double fpdata[32];
} dummy_t;

dummy_t global_d;
dummy_t global_d1;

/* This function may clobber VFP registers.  */
__attribute__ ((interrupt("IRQ"))) void IRQ_HDLR_Test(void)
{
  global_d.fpdata[3] += global_d.fpdata[3] * global_d1.fpdata[3];
}

/* This function does not need to clobber VFP registers.  */
__attribute__ ((interrupt("IRQ"))) void IRQ_HDLR_Test2(void)
{
  global_d.fpdata[3] = 1.0;
}