diff mbox series

[avr,applied] testsuite - Add noipa function attribute to noclone functions.

Message ID 9bafcb7a-8269-498e-b2c4-327b2ad41eb4@gjlay.de
State New
Headers show
Series [avr,applied] testsuite - Add noipa function attribute to noclone functions. | expand

Commit Message

Georg-Johann Lay July 16, 2024, 3:36 p.m. UTC
Applied as obvious.

Johann

--

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.

Comments

Sam James July 16, 2024, 3:56 p.m. UTC | #1
Georg-Johann Lay <avr@gjlay.de> writes:

> Applied as obvious.
>
> Johann

I think you can change all of those to just noipa which implies noclone
and noinline.
diff mbox series

Patch

diff --git a/gcc/testsuite/gcc.target/avr/isr-test.h b/gcc/testsuite/gcc.target/avr/isr-test.h
index 176dbc2a15f..bcad4886603 100644
--- a/gcc/testsuite/gcc.target/avr/isr-test.h
+++ b/gcc/testsuite/gcc.target/avr/isr-test.h
@@ -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();                              \
diff --git a/gcc/testsuite/gcc.target/avr/pr114981-powif.c b/gcc/testsuite/gcc.target/avr/pr114981-powif.c
index 191dcc61e6d..826a2c8889f 100644
--- a/gcc/testsuite/gcc.target/avr/pr114981-powif.c
+++ b/gcc/testsuite/gcc.target/avr/pr114981-powif.c
@@ -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;
diff --git a/gcc/testsuite/gcc.target/avr/pr114981-powil.c b/gcc/testsuite/gcc.target/avr/pr114981-powil.c
index 70f8e796c65..f92ca0a8475 100644
--- a/gcc/testsuite/gcc.target/avr/pr114981-powil.c
+++ b/gcc/testsuite/gcc.target/avr/pr114981-powil.c
@@ -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;
diff --git a/gcc/testsuite/gcc.target/avr/pr71676-1.c b/gcc/testsuite/gcc.target/avr/pr71676-1.c
index 0d41a600905..5b8fd8ac0dc 100644
--- a/gcc/testsuite/gcc.target/avr/pr71676-1.c
+++ b/gcc/testsuite/gcc.target/avr/pr71676-1.c
@@ -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)
diff --git a/gcc/testsuite/gcc.target/avr/pr71676-2.c b/gcc/testsuite/gcc.target/avr/pr71676-2.c
index a3a7a08032d..6bec6a0acd0 100644
--- a/gcc/testsuite/gcc.target/avr/pr71676-2.c
+++ b/gcc/testsuite/gcc.target/avr/pr71676-2.c
@@ -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)                                          \
diff --git a/gcc/testsuite/gcc.target/avr/pr71676-3.c b/gcc/testsuite/gcc.target/avr/pr71676-3.c
index 6c10f04b964..e0d44a1f0ae 100644
--- a/gcc/testsuite/gcc.target/avr/pr71676-3.c
+++ b/gcc/testsuite/gcc.target/avr/pr71676-3.c
@@ -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);                        \
diff --git a/gcc/testsuite/gcc.target/avr/pr71676.c b/gcc/testsuite/gcc.target/avr/pr71676.c
index 7737c1e5390..d82d67a34ea 100644
--- a/gcc/testsuite/gcc.target/avr/pr71676.c
+++ b/gcc/testsuite/gcc.target/avr/pr71676.c
@@ -5,7 +5,7 @@ 
 
 volatile unsigned char y;
 
-__attribute__((noinline,noclone))
+__attribute__((noinline,noclone,noipa))
 unsigned char foo (unsigned long x) 
 {
   switch (x)
diff --git a/gcc/testsuite/gcc.target/avr/torture/fix-types.h b/gcc/testsuite/gcc.target/avr/torture/fix-types.h
index f6a2aeb6fa2..8fcb113ce5c 100644
--- a/gcc/testsuite/gcc.target/avr/torture/fix-types.h
+++ b/gcc/testsuite/gcc.target/avr/torture/fix-types.h
@@ -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;                            \
diff --git a/gcc/testsuite/gcc.target/avr/torture/fuse-add.c b/gcc/testsuite/gcc.target/avr/torture/fuse-add.c
index b78b1aa9fc9..abc2ca0455c 100644
--- a/gcc/testsuite/gcc.target/avr/torture/fuse-add.c
+++ b/gcc/testsuite/gcc.target/avr/torture/fuse-add.c
@@ -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;
diff --git a/gcc/testsuite/gcc.target/avr/torture/get-mem.c b/gcc/testsuite/gcc.target/avr/torture/get-mem.c
index 46f47f10429..b22c8319cc0 100644
--- a/gcc/testsuite/gcc.target/avr/torture/get-mem.c
+++ b/gcc/testsuite/gcc.target/avr/torture/get-mem.c
@@ -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;
diff --git a/gcc/testsuite/gcc.target/avr/torture/insv-anyshift-hi.c b/gcc/testsuite/gcc.target/avr/torture/insv-anyshift-hi.c
index 7ee5c04813a..cc5311fa5a0 100644
--- a/gcc/testsuite/gcc.target/avr/torture/insv-anyshift-hi.c
+++ b/gcc/testsuite/gcc.target/avr/torture/insv-anyshift-hi.c
@@ -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);				\
diff --git a/gcc/testsuite/gcc.target/avr/torture/insv-anyshift-si.c b/gcc/testsuite/gcc.target/avr/torture/insv-anyshift-si.c
index f52593cf0a7..ea9d8d0cc87 100644
--- a/gcc/testsuite/gcc.target/avr/torture/insv-anyshift-si.c
+++ b/gcc/testsuite/gcc.target/avr/torture/insv-anyshift-si.c
@@ -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);				\
diff --git a/gcc/testsuite/gcc.target/avr/torture/isr-02-call.c b/gcc/testsuite/gcc.target/avr/torture/isr-02-call.c
index be4f22ebb35..26f835e7935 100644
--- a/gcc/testsuite/gcc.target/avr/torture/isr-02-call.c
+++ b/gcc/testsuite/gcc.target/avr/torture/isr-02-call.c
@@ -5,7 +5,7 @@ 
 
 int volatile v;
 
-__attribute__((noinline,noclone))
+__attribute__((noinline,noclone,noipa))
 void inc_v (void)
 {
   v++;
diff --git a/gcc/testsuite/gcc.target/avr/torture/isr-03-fixed.c b/gcc/testsuite/gcc.target/avr/torture/isr-03-fixed.c
index 5606225aebc..608aea81677 100644
--- a/gcc/testsuite/gcc.target/avr/torture/isr-03-fixed.c
+++ b/gcc/testsuite/gcc.target/avr/torture/isr-03-fixed.c
@@ -42,7 +42,7 @@  void test1 (void)
 
 /**********************************************************************/
 
-__attribute__((noinline,noclone))
+__attribute__((noinline,noclone,noipa))
 void inc_r2 (void)
 {
   reg2++;
diff --git a/gcc/testsuite/gcc.target/avr/torture/pr109650-1.c b/gcc/testsuite/gcc.target/avr/torture/pr109650-1.c
index 9030db00fde..2a83bcdc2d5 100644
--- a/gcc/testsuite/gcc.target/avr/torture/pr109650-1.c
+++ b/gcc/testsuite/gcc.target/avr/torture/pr109650-1.c
@@ -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);
diff --git a/gcc/testsuite/gcc.target/avr/torture/pr109650-2.c b/gcc/testsuite/gcc.target/avr/torture/pr109650-2.c
index 386dc322afa..96c1c9346cc 100644
--- a/gcc/testsuite/gcc.target/avr/torture/pr109650-2.c
+++ b/gcc/testsuite/gcc.target/avr/torture/pr109650-2.c
@@ -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)
 {
diff --git a/gcc/testsuite/gcc.target/avr/torture/pr109907-1.c b/gcc/testsuite/gcc.target/avr/torture/pr109907-1.c
index 975afb27700..22b746b7695 100644
--- a/gcc/testsuite/gcc.target/avr/torture/pr109907-1.c
+++ b/gcc/testsuite/gcc.target/avr/torture/pr109907-1.c
@@ -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;
diff --git a/gcc/testsuite/gcc.target/avr/torture/pr109907-2.c b/gcc/testsuite/gcc.target/avr/torture/pr109907-2.c
index db0cc72e590..60265d9e97d 100644
--- a/gcc/testsuite/gcc.target/avr/torture/pr109907-2.c
+++ b/gcc/testsuite/gcc.target/avr/torture/pr109907-2.c
@@ -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;
diff --git a/gcc/testsuite/gcc.target/avr/torture/pr114132-2.c b/gcc/testsuite/gcc.target/avr/torture/pr114132-2.c
index c2bcbacec37..6890caadb9f 100644
--- a/gcc/testsuite/gcc.target/avr/torture/pr114132-2.c
+++ b/gcc/testsuite/gcc.target/avr/torture/pr114132-2.c
@@ -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
diff --git a/gcc/testsuite/gcc.target/avr/torture/pr39633.c b/gcc/testsuite/gcc.target/avr/torture/pr39633.c
index c5f5b0450e6..d74a6385110 100644
--- a/gcc/testsuite/gcc.target/avr/torture/pr39633.c
+++ b/gcc/testsuite/gcc.target/avr/torture/pr39633.c
@@ -4,7 +4,7 @@ 
 
 char c = 42;
 
-void __attribute__((noinline,noclone))
+void __attribute__((noinline,noclone,noipa))
 pr39633 (char a)
 {
   a >>= 7;
diff --git a/gcc/testsuite/gcc.target/avr/torture/pr51782-1.c b/gcc/testsuite/gcc.target/avr/torture/pr51782-1.c
index 88ce8cd86cd..fe5714e528b 100644
--- a/gcc/testsuite/gcc.target/avr/torture/pr51782-1.c
+++ b/gcc/testsuite/gcc.target/avr/torture/pr51782-1.c
@@ -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;
diff --git a/gcc/testsuite/gcc.target/avr/torture/pr61055.c b/gcc/testsuite/gcc.target/avr/torture/pr61055.c
index cac1bdaf22c..8e101a5190d 100644
--- a/gcc/testsuite/gcc.target/avr/torture/pr61055.c
+++ b/gcc/testsuite/gcc.target/avr/torture/pr61055.c
@@ -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;
diff --git a/gcc/testsuite/gcc.target/avr/torture/pr61443.c b/gcc/testsuite/gcc.target/avr/torture/pr61443.c
index 36df852a012..5740a33d66a 100644
--- a/gcc/testsuite/gcc.target/avr/torture/pr61443.c
+++ b/gcc/testsuite/gcc.target/avr/torture/pr61443.c
@@ -9,7 +9,7 @@ 
 #define __memx  /* empty */
 #endif
 
-#define NC __attribute__((noinline,noclone))
+#define NC __attribute__((noinline,noclone,noipa))
 
 void NC vfun (char n, ...)
 {
diff --git a/gcc/testsuite/gcc.target/avr/torture/pr64331.c b/gcc/testsuite/gcc.target/avr/torture/pr64331.c
index 1934ccfd294..525b26a286d 100644
--- a/gcc/testsuite/gcc.target/avr/torture/pr64331.c
+++ b/gcc/testsuite/gcc.target/avr/torture/pr64331.c
@@ -6,7 +6,7 @@  typedef struct
 } T2;
 
 
-__attribute__((__noinline__, __noclone__))
+__attribute__((__noinline__, __noclone__,__noipa__))
 void foo2 (T2 *t, int x)
 {
   if (x != t->a)
diff --git a/gcc/testsuite/gcc.target/avr/torture/pr77326.c b/gcc/testsuite/gcc.target/avr/torture/pr77326.c
index 7fe11ec390a..4cbd00dc922 100644
--- a/gcc/testsuite/gcc.target/avr/torture/pr77326.c
+++ b/gcc/testsuite/gcc.target/avr/torture/pr77326.c
@@ -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);
diff --git a/gcc/testsuite/gcc.target/avr/torture/pr83729.c b/gcc/testsuite/gcc.target/avr/torture/pr83729.c
index 01b14e9b167..c42db9625b7 100644
--- a/gcc/testsuite/gcc.target/avr/torture/pr83729.c
+++ b/gcc/testsuite/gcc.target/avr/torture/pr83729.c
@@ -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";
diff --git a/gcc/testsuite/gcc.target/avr/torture/pr83801.c b/gcc/testsuite/gcc.target/avr/torture/pr83801.c
index 77a5b76f53d..1b0123ea06d 100644
--- a/gcc/testsuite/gcc.target/avr/torture/pr83801.c
+++ b/gcc/testsuite/gcc.target/avr/torture/pr83801.c
@@ -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";
diff --git a/gcc/testsuite/gcc.target/avr/torture/pr87376.c b/gcc/testsuite/gcc.target/avr/torture/pr87376.c
index c31a4a9dda5..edce20890ce 100644
--- a/gcc/testsuite/gcc.target/avr/torture/pr87376.c
+++ b/gcc/testsuite/gcc.target/avr/torture/pr87376.c
@@ -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;
diff --git a/gcc/testsuite/gcc.target/avr/torture/pr88236-pr115726.c b/gcc/testsuite/gcc.target/avr/torture/pr88236-pr115726.c
index 9fd5fd3b5f5..5205e2617b6 100644
--- a/gcc/testsuite/gcc.target/avr/torture/pr88236-pr115726.c
+++ b/gcc/testsuite/gcc.target/avr/torture/pr88236-pr115726.c
@@ -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");
diff --git a/gcc/testsuite/gcc.target/avr/torture/pr92606.c b/gcc/testsuite/gcc.target/avr/torture/pr92606.c
index cc07128c73b..a222077b0e3 100644
--- a/gcc/testsuite/gcc.target/avr/torture/pr92606.c
+++ b/gcc/testsuite/gcc.target/avr/torture/pr92606.c
@@ -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__
diff --git a/gcc/testsuite/gcc.target/avr/torture/pr98762.c b/gcc/testsuite/gcc.target/avr/torture/pr98762.c
index c3ba7da69a8..ac54c0b7528 100644
--- a/gcc/testsuite/gcc.target/avr/torture/pr98762.c
+++ b/gcc/testsuite/gcc.target/avr/torture/pr98762.c
@@ -3,7 +3,7 @@ 
 
 long long acc = 0x1122334455667788;
 
-__attribute__((noinline,noclone))
+__attribute__((noinline,noclone,noipa))
 void addhi (short a)
 {
   acc += (long long) a << 32;
diff --git a/gcc/testsuite/gcc.target/avr/torture/sat-hr-plus-minus.c b/gcc/testsuite/gcc.target/avr/torture/sat-hr-plus-minus.c
index e42ce912d37..3857cf22ba0 100644
--- a/gcc/testsuite/gcc.target/avr/torture/sat-hr-plus-minus.c
+++ b/gcc/testsuite/gcc.target/avr/torture/sat-hr-plus-minus.c
@@ -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__;
diff --git a/gcc/testsuite/gcc.target/avr/torture/sat-k-plus-minus.c b/gcc/testsuite/gcc.target/avr/torture/sat-k-plus-minus.c
index fea991e6ac5..68b9232bc68 100644
--- a/gcc/testsuite/gcc.target/avr/torture/sat-k-plus-minus.c
+++ b/gcc/testsuite/gcc.target/avr/torture/sat-k-plus-minus.c
@@ -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__;
diff --git a/gcc/testsuite/gcc.target/avr/torture/sat-llk-plus-minus.c b/gcc/testsuite/gcc.target/avr/torture/sat-llk-plus-minus.c
index 84ab7fd9fb1..4ae3cac802d 100644
--- a/gcc/testsuite/gcc.target/avr/torture/sat-llk-plus-minus.c
+++ b/gcc/testsuite/gcc.target/avr/torture/sat-llk-plus-minus.c
@@ -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__;
diff --git a/gcc/testsuite/gcc.target/avr/torture/sat-r-plus-minus.c b/gcc/testsuite/gcc.target/avr/torture/sat-r-plus-minus.c
index 72cbeee3ead..85dee40c309 100644
--- a/gcc/testsuite/gcc.target/avr/torture/sat-r-plus-minus.c
+++ b/gcc/testsuite/gcc.target/avr/torture/sat-r-plus-minus.c
@@ -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__;
diff --git a/gcc/testsuite/gcc.target/avr/torture/sat-uhr-plus-minus.c b/gcc/testsuite/gcc.target/avr/torture/sat-uhr-plus-minus.c
index f739c0d46d3..d04de453781 100644
--- a/gcc/testsuite/gcc.target/avr/torture/sat-uhr-plus-minus.c
+++ b/gcc/testsuite/gcc.target/avr/torture/sat-uhr-plus-minus.c
@@ -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;                   \
diff --git a/gcc/testsuite/gcc.target/avr/torture/sat-uk-plus-minus.c b/gcc/testsuite/gcc.target/avr/torture/sat-uk-plus-minus.c
index e3915e3d8c8..4b8c1a4059d 100644
--- a/gcc/testsuite/gcc.target/avr/torture/sat-uk-plus-minus.c
+++ b/gcc/testsuite/gcc.target/avr/torture/sat-uk-plus-minus.c
@@ -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;               \
diff --git a/gcc/testsuite/gcc.target/avr/torture/sat-ullk-plus-minus.c b/gcc/testsuite/gcc.target/avr/torture/sat-ullk-plus-minus.c
index 014627a9314..15469d83382 100644
--- a/gcc/testsuite/gcc.target/avr/torture/sat-ullk-plus-minus.c
+++ b/gcc/testsuite/gcc.target/avr/torture/sat-ullk-plus-minus.c
@@ -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;                 \
diff --git a/gcc/testsuite/gcc.target/avr/torture/sat-ur-plus-minus.c b/gcc/testsuite/gcc.target/avr/torture/sat-ur-plus-minus.c
index 409a4d04510..d514650875f 100644
--- a/gcc/testsuite/gcc.target/avr/torture/sat-ur-plus-minus.c
+++ b/gcc/testsuite/gcc.target/avr/torture/sat-ur-plus-minus.c
@@ -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;               \
diff --git a/gcc/testsuite/gcc.target/avr/torture/set-mem.c b/gcc/testsuite/gcc.target/avr/torture/set-mem.c
index 60ded19d4b6..6bc70407c50 100644
--- a/gcc/testsuite/gcc.target/avr/torture/set-mem.c
+++ b/gcc/testsuite/gcc.target/avr/torture/set-mem.c
@@ -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;
diff --git a/gcc/testsuite/gcc.target/avr/torture/tiny-progmem.c b/gcc/testsuite/gcc.target/avr/torture/tiny-progmem.c
index 1545c55ca3e..f2ed602e988 100644
--- a/gcc/testsuite/gcc.target/avr/torture/tiny-progmem.c
+++ b/gcc/testsuite/gcc.target/avr/torture/tiny-progmem.c
@@ -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];