AVR: testsuite - Add noipa function attribute to noclone functions.

Many functions under test have the noinline and noclone function
attributes attached so that no (constant) values are propagated
into the functions, so that we actually are testing what's supposed
to be tested.  In order to enforce that, noipa may also be required
when inter-procedural analysis / optimizations are on.

gcc/testsuite/
	* gcc.target/avr/isr-test.h: Add noipa function attribute
	to noclone functions.
	* gcc.target/avr/pr114981-powif.c: Same.
	* gcc.target/avr/pr114981-powil.c: Same.
	* gcc.target/avr/pr71676-1.c: Same.
	* gcc.target/avr/pr71676-2.c: Same.
	* gcc.target/avr/pr71676-3.c: Same.
	* gcc.target/avr/pr71676.c: Same.
	* gcc.target/avr/torture/fix-types.h: Same.
	* gcc.target/avr/torture/fuse-add.c: Same.
	* gcc.target/avr/torture/get-mem.c: Same.
	* gcc.target/avr/torture/insv-anyshift-hi.c: Same.
	* gcc.target/avr/torture/insv-anyshift-si.c: Same.
	* gcc.target/avr/torture/isr-02-call.c: Same.
	* gcc.target/avr/torture/isr-03-fixed.c: Same.
	* gcc.target/avr/torture/pr109650-1.c: Same.
	* gcc.target/avr/torture/pr109650-2.c: Same.
	* gcc.target/avr/torture/pr109907-1.c: Same.
	* gcc.target/avr/torture/pr109907-2.c: Same.
	* gcc.target/avr/torture/pr114132-2.c: Same.
	* gcc.target/avr/torture/pr39633.c: Same.
	* gcc.target/avr/torture/pr51782-1.c: Same.
	* gcc.target/avr/torture/pr61055.c: Same.
	* gcc.target/avr/torture/pr61443.c: Same.
	* gcc.target/avr/torture/pr64331.c: Same.
	* gcc.target/avr/torture/pr77326.c: Same.
	* gcc.target/avr/torture/pr83729.c: Same.
	* gcc.target/avr/torture/pr83801.c: Same.
	* gcc.target/avr/torture/pr87376.c: Same.
	* gcc.target/avr/torture/pr88236-pr115726.c: Same.
	* gcc.target/avr/torture/pr92606.c: Same.
	* gcc.target/avr/torture/pr98762.c: Same.
	* gcc.target/avr/torture/sat-hr-plus-minus.c: Same.
	* gcc.target/avr/torture/sat-k-plus-minus.c: Same.
	* gcc.target/avr/torture/sat-llk-plus-minus.c: Same.
	* gcc.target/avr/torture/sat-r-plus-minus.c: Same.
	* gcc.target/avr/torture/sat-uhr-plus-minus.c: Same.
	* gcc.target/avr/torture/sat-uk-plus-minus.c: Same.
	* gcc.target/avr/torture/sat-ullk-plus-minus.c: Same.
	* gcc.target/avr/torture/sat-ur-plus-minus.c: Same.
	* gcc.target/avr/torture/set-mem.c: Same.
	* gcc.target/avr/torture/tiny-progmem.c: Same.
This commit is contained in:
Georg-Johann Lay 2024-07-16 17:33:18 +02:00
parent 9f966b6a8f
commit f8b302c983
41 changed files with 121 additions and 121 deletions

View File

@ -175,7 +175,7 @@ static void compare_reginfo (unsigned long gpr_ignore)
ST(24,M) ST(25,M) ST(26,M) ST(27,M) \
ST(28,M) ST(29,M) ST(30,M) ST(31,M)
__attribute__((unused,naked,noinline,noclone))
__attribute__((unused,naked,noinline,noclone,noipa))
static void host_store1 (void)
{
__asm __volatile__
@ -217,7 +217,7 @@ static void host_store1 (void)
: "memory", "r31");
}
__attribute__((unused,naked,noinline,noclone))
__attribute__((unused,naked,noinline,noclone,noipa))
static void host_store2 (void)
{
__asm __volatile__
@ -271,7 +271,7 @@ static void host_store2 (void)
#define MK_RUN_ISR(N, IGMSK) \
\
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
void run_isr_ ## N (void) \
{ \
clear_reginfo(); \

View File

@ -10,7 +10,7 @@ const float vals[] =
#define ARRAY_SIZE(X) ((int) (sizeof(X) / sizeof(*X)))
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
void test1 (float x)
{
int i;

View File

@ -10,7 +10,7 @@ const long double vals[] =
#define ARRAY_SIZE(X) ((int) (sizeof(X) / sizeof(*X)))
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
void test1 (long double x)
{
int i;

View File

@ -4,7 +4,7 @@
#include "exit-abort.h"
volatile unsigned char y;
unsigned char __attribute__((noinline,noclone))
unsigned char __attribute__((noinline,noclone,noipa))
foo1 (char x)
{
switch (x)
@ -22,7 +22,7 @@ foo1 (char x)
return y;
}
unsigned char __attribute__((noinline,noclone))
unsigned char __attribute__((noinline,noclone,noipa))
foo2 (char x)
{
switch (x)
@ -40,7 +40,7 @@ foo2 (char x)
return y;
}
unsigned char __attribute__((noinline,noclone))
unsigned char __attribute__((noinline,noclone,noipa))
foo3 (char x)
{
switch (x)
@ -58,7 +58,7 @@ foo3 (char x)
return y;
}
unsigned char __attribute__((noinline,noclone))
unsigned char __attribute__((noinline,noclone,noipa))
foo4 (char x)
{
switch (x)
@ -76,7 +76,7 @@ foo4 (char x)
return y;
}
unsigned char __attribute__((noinline,noclone))
unsigned char __attribute__((noinline,noclone,noipa))
foo5 (int x)
{
switch (x)
@ -94,7 +94,7 @@ foo5 (int x)
return y;
}
unsigned char __attribute__((noinline,noclone))
unsigned char __attribute__((noinline,noclone,noipa))
foo6 (int x)
{
switch (x)
@ -112,7 +112,7 @@ foo6 (int x)
return y;
}
unsigned char __attribute__((noinline,noclone))
unsigned char __attribute__((noinline,noclone,noipa))
foo7 (int x)
{
switch (x)
@ -130,7 +130,7 @@ foo7 (int x)
return y;
}
unsigned char __attribute__((noinline,noclone))
unsigned char __attribute__((noinline,noclone,noipa))
foo8 (int x)
{
switch (x)
@ -148,7 +148,7 @@ foo8 (int x)
return y;
}
unsigned char __attribute__((noinline,noclone))
unsigned char __attribute__((noinline,noclone,noipa))
foo9 (long x)
{
switch (x)
@ -166,7 +166,7 @@ foo9 (long x)
return y;
}
unsigned char __attribute__((noinline,noclone))
unsigned char __attribute__((noinline,noclone,noipa))
foo10 (unsigned long x)
{
switch (x)
@ -184,7 +184,7 @@ foo10 (unsigned long x)
return y;
}
unsigned char __attribute__((noinline,noclone))
unsigned char __attribute__((noinline,noclone,noipa))
foo11 (long x)
{
switch (x)
@ -202,7 +202,7 @@ foo11 (long x)
return y;
}
unsigned char __attribute__((noinline,noclone))
unsigned char __attribute__((noinline,noclone,noipa))
foo12 (long x)
{
switch (x)
@ -220,7 +220,7 @@ foo12 (long x)
return y;
}
unsigned char __attribute__((noinline,noclone))
unsigned char __attribute__((noinline,noclone,noipa))
foo13 (long long x)
{
switch (x)
@ -238,7 +238,7 @@ foo13 (long long x)
return y;
}
unsigned char __attribute__((noinline,noclone))
unsigned char __attribute__((noinline,noclone,noipa))
foo14 (long long x)
{
switch (x)
@ -256,7 +256,7 @@ foo14 (long long x)
return y;
}
unsigned char __attribute__((noinline,noclone))
unsigned char __attribute__((noinline,noclone,noipa))
foo15 (long long x)
{
switch (x)
@ -275,7 +275,7 @@ foo15 (long long x)
}
unsigned char __attribute__((noinline,noclone))
unsigned char __attribute__((noinline,noclone,noipa))
foo16 (long long x)
{
switch (x)

View File

@ -2,7 +2,7 @@
/* { dg-options "-dp -w -Os -fno-tree-switch-conversion" } */
#define MK_FUN(NAME, TYP, V) \
unsigned char __attribute__((noinline,noclone)) \
unsigned char __attribute__((noinline,noclone,noipa)) \
select_## NAME (TYP x, unsigned char y) \
{ \
switch (x) \

View File

@ -27,7 +27,7 @@
return x; \
} \
\
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
unsigned char select_## NAME (TYP x, unsigned char y) \
{ \
return value_## NAME (x, y); \

View File

@ -5,7 +5,7 @@
volatile unsigned char y;
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
unsigned char foo (unsigned long x)
{
switch (x)

View File

@ -60,7 +60,7 @@ typedef __UINT64_TYPE__ xint_ulr_t;
#define INTullk_MAX __UINT64_MAX__
#define SS_FUN(NAME, OP, T, FX) \
T __attribute__((noinline,noclone)) \
T __attribute__((noinline,noclone,noipa)) \
NAME##_##FX (T fa, T fb) \
{ \
int_##FX##_t ia; \
@ -79,7 +79,7 @@ typedef __UINT64_TYPE__ xint_ulr_t;
}
#define US_FUN(NAME, OP, T, FX) \
T __attribute__((noinline,noclone)) \
T __attribute__((noinline,noclone,noipa)) \
NAME##_##FX (T fa, T fb) \
{ \
int_##FX##_t ia; \
@ -98,7 +98,7 @@ typedef __UINT64_TYPE__ xint_ulr_t;
}
#define SS_LFUN(NAME, OP, T, FX, CMP) \
T __attribute__((noinline,noclone)) \
T __attribute__((noinline,noclone,noipa)) \
NAME##_##FX (T fa, T fb) \
{ \
int_##FX##_t ia; \
@ -116,7 +116,7 @@ typedef __UINT64_TYPE__ xint_ulr_t;
}
#define US_LFUN(NAME, OP, T, FX, CMP) \
T __attribute__((noinline,noclone)) \
T __attribute__((noinline,noclone,noipa)) \
NAME##_##FX (T fa, T fb) \
{ \
int_##FX##_t ia; \

View File

@ -9,7 +9,7 @@ extern const uint64_t bb __asm ("real_bb");
__attribute__((used)) const uint64_t real_aa = 0x1122334455667788;
__attribute__((used)) const uint64_t real_bb = 0x0908070605040302;
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
uint64_t add1 (const uint64_t *aa, const uint64_t *bb)
{
return *aa + *bb;
@ -22,7 +22,7 @@ extern const __flash uint64_t fb __asm ("real_fb");
__attribute__((used)) const __flash uint64_t real_fa = 0x1122334455667788;
__attribute__((used)) const __flash uint64_t real_fb = 0x0908070605040302;
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
uint64_t add2 (const __flash uint64_t *aa, const uint64_t *bb)
{
return *aa + *bb;

View File

@ -1,6 +1,6 @@
/* { dg-do run } */
#define NI __attribute__((noinline, noclone))
#define NI __attribute__((noinline, noclone, noipa))
typedef __INT8_TYPE__ s8;
typedef __INT16_TYPE__ s16;

View File

@ -14,7 +14,7 @@ typedef __UINT16_TYPE__ uint16_t;
return (a >> LSR) & (1u << OBIT); \
} \
\
__attribute__((__noinline__,__noclone__)) \
__attribute__((__noinline__,__noclone__,__noipa__)) \
uint16_t fun1_lsr_##OBIT##_##LSR##_ni (int x, uint16_t a) \
{ \
return fun1_lsr_##OBIT##_##LSR##_ai (x, a); \
@ -38,7 +38,7 @@ typedef __UINT16_TYPE__ uint16_t;
return (a >> LSR) & (1u << OBIT); \
} \
\
__attribute__((__noinline__,__noclone__)) \
__attribute__((__noinline__,__noclone__,__noipa__)) \
uint16_t fun3_lsr_##OBIT##_##LSR##_ni (uint16_t a) \
{ \
return fun3_lsr_##OBIT##_##LSR##_ai (a); \
@ -63,7 +63,7 @@ typedef __UINT16_TYPE__ uint16_t;
return (a << LSL) & (1u << OBIT); \
} \
\
__attribute__((__noinline__,__noclone__)) \
__attribute__((__noinline__,__noclone__,__noipa__)) \
uint16_t fun2_lsl_##OBIT##_##LSL##_ni (uint16_t a) \
{ \
return fun2_lsl_##OBIT##_##LSL##_ai (a); \

View File

@ -13,7 +13,7 @@ typedef __UINT32_TYPE__ uint32_t;
return (a >> LSR) & (1ul << OBIT); \
} \
\
__attribute__((__noinline__,__noclone__)) \
__attribute__((__noinline__,__noclone__,__noipa__)) \
uint32_t fun1_lsr_##OBIT##_##LSR##_ni (int x, uint32_t a) \
{ \
return fun1_lsr_##OBIT##_##LSR##_ai (x, a); \
@ -39,7 +39,7 @@ typedef __UINT32_TYPE__ uint32_t;
return (a << LSL) & (1ul << OBIT); \
} \
\
__attribute__((__noinline__,__noclone__)) \
__attribute__((__noinline__,__noclone__,__noipa__)) \
uint32_t fun2_lsl_##OBIT##_##LSL##_ni (int x, uint32_t a) \
{ \
return fun2_lsl_##OBIT##_##LSL##_ai (x, a); \

View File

@ -5,7 +5,7 @@
int volatile v;
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
void inc_v (void)
{
v++;

View File

@ -42,7 +42,7 @@ void test1 (void)
/**********************************************************************/
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
void inc_r2 (void)
{
reg2++;

View File

@ -12,7 +12,7 @@ bool func1a (bool p1, uint8_t p2)
return p2 <= 2;
}
__attribute__((__noinline__, __noclone__))
__attribute__((__noinline__, __noclone__,__noipa__))
bool func1b (bool p1, uint8_t p2)
{
return func1a (p1, p2);
@ -26,7 +26,7 @@ bool func2a (bool p1, unsigned p2)
return p2 <= 2;
}
__attribute__((__noinline__, __noclone__))
__attribute__((__noinline__, __noclone__,__noipa__))
bool func2b (bool p1, unsigned p2)
{
return func2a (p1, p2);

View File

@ -3,7 +3,7 @@
typedef __UINT8_TYPE__ uint8_t;
#define AI static __inline__ __attribute__((__always_inline__))
#define NI __attribute__((__noinline__,__noclone__))
#define NI __attribute__((__noinline__,__noclone__,__noipa__))
AI uint8_t func1_eq (uint8_t c, unsigned x)
{

View File

@ -1,6 +1,6 @@
/* { dg-do run } */
#define NI __attribute__((__noinline__,__noclone__))
#define NI __attribute__((__noinline__,__noclone__,__noipa__))
#define AI static __inline__ __attribute__((__always_inline__))
typedef __UINT8_TYPE__ uint8_t;

View File

@ -1,6 +1,6 @@
/* { dg-do run } */
#define NI __attribute__((__noinline__,__noclone__))
#define NI __attribute__((__noinline__,__noclone__,__noipa__))
#define AI static __inline__ __attribute__((__always_inline__))
typedef __UINT8_TYPE__ uint8_t;

View File

@ -1,7 +1,7 @@
/* { dg-do run } */
/* { dg-additional-options "-std=c99" } */
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
#ifdef __AVR_TINY__
int func (int a, int b, char c)
#else

View File

@ -4,7 +4,7 @@
char c = 42;
void __attribute__((noinline,noclone))
void __attribute__((noinline,noclone,noipa))
pr39633 (char a)
{
a >>= 7;

View File

@ -14,27 +14,27 @@ struct RGB { char r,g,b; };
__flash const struct R r1 = { 12 };
__flash const struct RGB r3 = { 23, 56, 78 };
char __attribute__((noinline,noclone))
char __attribute__((noinline,noclone,noipa))
read1_bug (const __flash struct R *s)
{
struct R t = *s;
return t.r;
}
char __attribute__((noinline,noclone))
char __attribute__((noinline,noclone,noipa))
read1_ok (const __flash struct R *s)
{
return s->r;
}
char __attribute__((noinline,noclone))
char __attribute__((noinline,noclone,noipa))
read3_bug (const __flash struct RGB *s)
{
struct RGB t = *s;
return t.r + t.g + t.b;
}
char __attribute__((noinline,noclone))
char __attribute__((noinline,noclone,noipa))
read3_ok (const __flash struct RGB *s)
{
return s->r + s->g + s->b;

View File

@ -7,7 +7,7 @@ typedef __UINT16_TYPE__ uint16_t;
typedef __INT16_TYPE__ int16_t;
typedef __UINT8_TYPE__ uint8_t;
uint8_t __attribute__((noinline,noclone))
uint8_t __attribute__((noinline,noclone,noipa))
fun_inc (uint8_t c0)
{
register uint8_t c asm ("r15") = c0;
@ -24,7 +24,7 @@ fun_inc (uint8_t c0)
return c;
}
uint8_t __attribute__((noinline,noclone))
uint8_t __attribute__((noinline,noclone,noipa))
fun_dec (uint8_t c0)
{
register uint8_t c asm ("r15") = c0;
@ -42,7 +42,7 @@ fun_dec (uint8_t c0)
}
uint8_t __attribute__((noinline,noclone))
uint8_t __attribute__((noinline,noclone,noipa))
fun_neg (uint8_t c0)
{
register uint8_t c asm ("r15") = c0;
@ -54,7 +54,7 @@ fun_neg (uint8_t c0)
return c;
}
uint16_t __attribute__((noinline,noclone))
uint16_t __attribute__((noinline,noclone,noipa))
fun_adiw (uint16_t c0)
{
register uint16_t c asm ("r24") = c0;

View File

@ -9,7 +9,7 @@
#define __memx /* empty */
#endif
#define NC __attribute__((noinline,noclone))
#define NC __attribute__((noinline,noclone,noipa))
void NC vfun (char n, ...)
{

View File

@ -6,7 +6,7 @@ typedef struct
} T2;
__attribute__((__noinline__, __noclone__))
__attribute__((__noinline__, __noclone__,__noipa__))
void foo2 (T2 *t, int x)
{
if (x != t->a)

View File

@ -3,13 +3,13 @@
extern void test1 (void) __attribute__((weak));
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
static void va_pseudo (int flag, ...)
{
__asm ("nop":);
}
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
static void func (void)
{
va_pseudo (0, 0, 0, 0);

View File

@ -1,7 +1,7 @@
/* { dg-options { "-std=gnu99" } } */
/* { dg-do run { target { ! avr_tiny } } } */
__attribute((noinline,noclone))
__attribute((noinline,noclone,noipa))
char to_ascii (unsigned i)
{
static const char __memx code_tab[] = "0123456789";

View File

@ -1,7 +1,7 @@
/* { dg-options { "-std=gnu99" } } */
/* { dg-do run { target { ! avr_tiny } } } */
__attribute((noinline,noclone))
__attribute((noinline,noclone,noipa))
char to_ascii (unsigned i)
{
static const char __flash code_tab[] = "0123456789";

View File

@ -9,31 +9,31 @@ extern const uint64_t bb __asm ("real_bb");
const __memx uint64_t real_aa = 0x1122334455667788;
const uint64_t real_bb = 0x0908070605040302;
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
uint64_t add1 (void)
{
return aa + bb;
}
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
uint64_t add2 (void)
{
return bb + aa;
}
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
uint64_t sub1 (void)
{
return aa - bb;
}
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
uint64_t sub2 (void)
{
return bb - aa;
}
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
uint64_t neg1 (void)
{
return -aa;

View File

@ -7,7 +7,7 @@ char rvals8[] = { 0, 2, 4 };
const __flash int fvals16[] = { 1, 2, 3 };
int rvals16[] = { 0, 2, 4 };
__attribute__((noinline, noclone))
__attribute__((noinline, noclone, noipa))
char xload8_r30 (const __memx char *pc)
{
register char c __asm ("r30");
@ -16,7 +16,7 @@ char xload8_r30 (const __memx char *pc)
return c;
}
__attribute__((noinline, noclone))
__attribute__((noinline, noclone, noipa))
int xload16_r30 (const __memx int *pc)
{
register int c __asm ("r30");
@ -25,7 +25,7 @@ int xload16_r30 (const __memx int *pc)
return c;
}
__attribute__((noinline, noclone))
__attribute__((noinline, noclone, noipa))
char xload8_r22 (const __memx char *pc)
{
register char c __asm ("r22");
@ -34,7 +34,7 @@ char xload8_r22 (const __memx char *pc)
return c;
}
__attribute__((noinline, noclone))
__attribute__((noinline, noclone, noipa))
int xload16_r22 (const __memx int *pc)
{
register int c __asm ("r22");
@ -43,7 +43,7 @@ int xload16_r22 (const __memx int *pc)
return c;
}
__attribute__((noinline, noclone))
__attribute__((noinline, noclone, noipa))
int xload16_r20 (const __memx int *pc)
{
register int c __asm ("r20");

View File

@ -5,7 +5,7 @@ typedef __UINT32_TYPE__ uint32_t;
typedef uint32_t T;
#define NI __attribute__((noinline,noclone))
#define NI __attribute__((noinline,noclone,noipa))
#ifndef __AVR_TINY__

View File

@ -3,7 +3,7 @@
long long acc = 0x1122334455667788;
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
void addhi (short a)
{
acc += (long long) a << 32;

View File

@ -14,22 +14,22 @@ SS_FUN (ss_add, +, fx_t, hr)
SS_FUN (ss_sub, -, fx_t, hr)
#define VAL(N, X) \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t ss_add2_##N (satfx_t a) \
{ \
return ss_add_hr (a, X##P##-##7hr); \
} \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t ss_add_##N (satfx_t a) \
{ \
return a + X##P##-##7hr; \
} \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t ss_sub2_##N (satfx_t a) \
{ \
return ss_sub_hr (a, X##P##-##7hr); \
} \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t ss_sub_##N (satfx_t a) \
{ \
return a - X##P##-##7hr; \
@ -37,25 +37,25 @@ SS_FUN (ss_sub, -, fx_t, hr)
#include "vals-hr.def"
#undef VAL
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
satfx_t ss_add2_99 (satfx_t a)
{
return ss_add_hr (a, __FRACT_MIN__);
}
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
satfx_t ss_add_99 (satfx_t a)
{
return a + __FRACT_MIN__;
}
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
satfx_t ss_sub2_99 (satfx_t a)
{
return ss_sub_hr (a, __FRACT_MIN__);
}
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
satfx_t ss_sub_99 (satfx_t a)
{
return a - __FRACT_MIN__;

View File

@ -14,22 +14,22 @@ SS_FUN (ss_add, +, fx_t, k)
SS_FUN (ss_sub, -, fx_t, k)
#define VAL(N, X) \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t ss_add2_##N (satfx_t a) \
{ \
return ss_add_k (a, X##P##-##16k); \
} \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t ss_add_##N (satfx_t a) \
{ \
return a + X##P##-##16k; \
} \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t ss_sub2_##N (satfx_t a) \
{ \
return ss_sub_k (a, X##P##-##16k); \
} \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t ss_sub_##N (satfx_t a) \
{ \
return a - X##P##-##16k; \
@ -37,25 +37,25 @@ SS_FUN (ss_sub, -, fx_t, k)
#include "vals-k.def"
#undef VAL
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
satfx_t ss_add2_99 (satfx_t a)
{
return ss_add_k (a, __ACCUM_MIN__);
}
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
satfx_t ss_add_99 (satfx_t a)
{
return a + __ACCUM_MIN__;
}
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
satfx_t ss_sub2_99 (satfx_t a)
{
return ss_sub_k (a, __ACCUM_MIN__);
}
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
satfx_t ss_sub_99 (satfx_t a)
{
return a - __ACCUM_MIN__;

View File

@ -14,22 +14,22 @@ SS_LFUN (ss_add, +, fx_t, llk, >)
SS_LFUN (ss_sub, -, fx_t, llk, <)
#define VAL(N, X) \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t ss_add2_##N (satfx_t a) \
{ \
return ss_add_llk (a, X##P##-##48llk); \
} \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t ss_add_##N (satfx_t a) \
{ \
return a + X##P##-##48llk; \
} \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t ss_sub2_##N (satfx_t a) \
{ \
return ss_sub_llk (a, X##P##-##48llk); \
} \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t ss_sub_##N (satfx_t a) \
{ \
return a - X##P##-##48llk; \
@ -37,25 +37,25 @@ SS_LFUN (ss_sub, -, fx_t, llk, <)
#include "vals-llk.def"
#undef VAL
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
satfx_t ss_add2_99 (satfx_t a)
{
return ss_add_llk (a, __LLACCUM_MIN__);
}
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
satfx_t ss_add_99 (satfx_t a)
{
return a + __LLACCUM_MIN__;
}
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
satfx_t ss_sub2_99 (satfx_t a)
{
return ss_sub_llk (a, __LLACCUM_MIN__);
}
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
satfx_t ss_sub_99 (satfx_t a)
{
return a - __LLACCUM_MIN__;

View File

@ -14,22 +14,22 @@ SS_FUN (ss_add, +, fx_t, r)
SS_FUN (ss_sub, -, fx_t, r)
#define VAL(N, X) \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t ss_add2_##N (satfx_t a) \
{ \
return ss_add_r (a, X##P##-##15r); \
} \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t ss_add_##N (satfx_t a) \
{ \
return a + X##P##-##15r; \
} \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t ss_sub2_##N (satfx_t a) \
{ \
return ss_sub_r (a, X##P##-##15r); \
} \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t ss_sub_##N (satfx_t a) \
{ \
return a - X##P##-##15r; \
@ -37,25 +37,25 @@ SS_FUN (ss_sub, -, fx_t, r)
#include "vals-r.def"
#undef VAL
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
satfx_t ss_add2_99 (satfx_t a)
{
return ss_add_r (a, __FRACT_MIN__);
}
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
satfx_t ss_add_99 (satfx_t a)
{
return a + __FRACT_MIN__;
}
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
satfx_t ss_sub2_99 (satfx_t a)
{
return ss_sub_r (a, __FRACT_MIN__);
}
__attribute__((noinline,noclone))
__attribute__((noinline,noclone,noipa))
satfx_t ss_sub_99 (satfx_t a)
{
return a - __FRACT_MIN__;

View File

@ -14,22 +14,22 @@ US_LFUN (us_add, +, fx_t, uhr, >)
US_LFUN (us_sub, -, fx_t, uhr, <)
#define VAL(N, X) \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t us_add2_##N (satfx_t a) \
{ \
return us_add_uhr (a, X##P##-##8uhr); \
} \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t us_add_##N (satfx_t a) \
{ \
return a + X##P##-##8uhr; \
} \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t us_sub2_##N (satfx_t a) \
{ \
return us_sub_uhr (a, X##P##-##8uhr); \
} \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t us_sub_##N (satfx_t a) \
{ \
return a - X##P##-##8uhr; \

View File

@ -14,22 +14,22 @@ US_LFUN (us_add, +, fx_t, uk, >)
US_LFUN (us_sub, -, fx_t, uk, <)
#define VAL(N, X) \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t us_add2_##N (satfx_t a) \
{ \
return us_add_uk (a, X##P##-##16uk); \
} \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t us_add_##N (satfx_t a) \
{ \
return a + X##P##-##16uk; \
} \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t us_sub2_##N (satfx_t a) \
{ \
return us_sub_uk (a, X##P##-##16uk); \
} \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t us_sub_##N (satfx_t a) \
{ \
return a - X##P##-##16uk; \

View File

@ -14,22 +14,22 @@ US_LFUN (us_add, +, fx_t, ullk, >)
US_LFUN (us_sub, -, fx_t, ullk, <)
#define VAL(N, X) \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t us_add2_##N (satfx_t a) \
{ \
return us_add_ullk (a, X##P##-##48ullk); \
} \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t us_add_##N (satfx_t a) \
{ \
return a + X##P##-##48ullk; \
} \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t us_sub2_##N (satfx_t a) \
{ \
return us_sub_ullk (a, X##P##-##48ullk); \
} \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t us_sub_##N (satfx_t a) \
{ \
return a - X##P##-##48ullk; \

View File

@ -14,22 +14,22 @@ US_LFUN (us_add, +, fx_t, ur, >)
US_LFUN (us_sub, -, fx_t, ur, <)
#define VAL(N, X) \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t us_add2_##N (satfx_t a) \
{ \
return us_add_ur (a, X##P##-##16ur); \
} \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t us_add_##N (satfx_t a) \
{ \
return a + X##P##-##16ur; \
} \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t us_sub2_##N (satfx_t a) \
{ \
return us_sub_ur (a, X##P##-##16ur); \
} \
__attribute__((noinline,noclone)) \
__attribute__((noinline,noclone,noipa)) \
satfx_t us_sub_##N (satfx_t a) \
{ \
return a - X##P##-##16ur; \

View File

@ -1,6 +1,6 @@
/* { dg-do run } */
#define NI __attribute__((noinline, noclone))
#define NI __attribute__((noinline, noclone, noipa))
typedef __INT8_TYPE__ s8;
typedef __INT16_TYPE__ s16;

View File

@ -10,7 +10,7 @@
#define PSTR(s) (__extension__({ static const char __c[] PM = (s); &__c[0];}))
#define NI __attribute__((noinline,noclone))
#define NI __attribute__((noinline,noclone,noipa))
const volatile int data[] PM = { 1234, 5678 };
const volatile int * volatile pdata = &data[1];