]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
AVR: testsuite - Add noipa function attribute to noclone functions.
authorGeorg-Johann Lay <avr@gjlay.de>
Tue, 16 Jul 2024 15:33:18 +0000 (17:33 +0200)
committerGeorg-Johann Lay <avr@gjlay.de>
Tue, 16 Jul 2024 15:33:50 +0000 (17:33 +0200)
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.

41 files changed:
gcc/testsuite/gcc.target/avr/isr-test.h
gcc/testsuite/gcc.target/avr/pr114981-powif.c
gcc/testsuite/gcc.target/avr/pr114981-powil.c
gcc/testsuite/gcc.target/avr/pr71676-1.c
gcc/testsuite/gcc.target/avr/pr71676-2.c
gcc/testsuite/gcc.target/avr/pr71676-3.c
gcc/testsuite/gcc.target/avr/pr71676.c
gcc/testsuite/gcc.target/avr/torture/fix-types.h
gcc/testsuite/gcc.target/avr/torture/fuse-add.c
gcc/testsuite/gcc.target/avr/torture/get-mem.c
gcc/testsuite/gcc.target/avr/torture/insv-anyshift-hi.c
gcc/testsuite/gcc.target/avr/torture/insv-anyshift-si.c
gcc/testsuite/gcc.target/avr/torture/isr-02-call.c
gcc/testsuite/gcc.target/avr/torture/isr-03-fixed.c
gcc/testsuite/gcc.target/avr/torture/pr109650-1.c
gcc/testsuite/gcc.target/avr/torture/pr109650-2.c
gcc/testsuite/gcc.target/avr/torture/pr109907-1.c
gcc/testsuite/gcc.target/avr/torture/pr109907-2.c
gcc/testsuite/gcc.target/avr/torture/pr114132-2.c
gcc/testsuite/gcc.target/avr/torture/pr39633.c
gcc/testsuite/gcc.target/avr/torture/pr51782-1.c
gcc/testsuite/gcc.target/avr/torture/pr61055.c
gcc/testsuite/gcc.target/avr/torture/pr61443.c
gcc/testsuite/gcc.target/avr/torture/pr64331.c
gcc/testsuite/gcc.target/avr/torture/pr77326.c
gcc/testsuite/gcc.target/avr/torture/pr83729.c
gcc/testsuite/gcc.target/avr/torture/pr83801.c
gcc/testsuite/gcc.target/avr/torture/pr87376.c
gcc/testsuite/gcc.target/avr/torture/pr88236-pr115726.c
gcc/testsuite/gcc.target/avr/torture/pr92606.c
gcc/testsuite/gcc.target/avr/torture/pr98762.c
gcc/testsuite/gcc.target/avr/torture/sat-hr-plus-minus.c
gcc/testsuite/gcc.target/avr/torture/sat-k-plus-minus.c
gcc/testsuite/gcc.target/avr/torture/sat-llk-plus-minus.c
gcc/testsuite/gcc.target/avr/torture/sat-r-plus-minus.c
gcc/testsuite/gcc.target/avr/torture/sat-uhr-plus-minus.c
gcc/testsuite/gcc.target/avr/torture/sat-uk-plus-minus.c
gcc/testsuite/gcc.target/avr/torture/sat-ullk-plus-minus.c
gcc/testsuite/gcc.target/avr/torture/sat-ur-plus-minus.c
gcc/testsuite/gcc.target/avr/torture/set-mem.c
gcc/testsuite/gcc.target/avr/torture/tiny-progmem.c

index 176dbc2a15fd389bd7e5d36f31fa862b99b9880a..bcad4886603e710f1a77cf83ad79b99d098c635b 100644 (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();                              \
index 191dcc61e6d8a85389dfbf4aa2bcdc6e2ae9b037..826a2c8889f17c47ebf3dfe1bba38c54c7dc8c2f 100644 (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;
index 70f8e796c6547ba43f79d36296bb2d13088e0ef1..f92ca0a847554e463acb26c07a43a593d7856bb6 100644 (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;
index 0d41a600905445f66ff0fd26ed3d77ce59ee13df..5b8fd8ac0dcbeef6e6203df41903bab7f8f24f76 100644 (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)
index a3a7a08032d5b6226af92adc4af76f37bf5add53..6bec6a0acd0128d4a79d06b677f746cdfaa874b8 100644 (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)                                          \
index 6c10f04b964c5af53875101cebd627bf6a01bbdd..e0d44a1f0ae64f8b1a398945fd99e3f61b4a724b 100644 (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);                        \
index 7737c1e5390ae026999b26cfe519e51a044fbebc..d82d67a34ea13deee9ac56da3d781477f9b66bc3 100644 (file)
@@ -5,7 +5,7 @@
 
 volatile unsigned char y;
 
-__attribute__((noinline,noclone))
+__attribute__((noinline,noclone,noipa))
 unsigned char foo (unsigned long x) 
 {
   switch (x)
index f6a2aeb6fa213375c990b8b06df8b1f71674267c..8fcb113ce5c8cf655e8b5094aa5d34962baf2fb1 100644 (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;                            \
index b78b1aa9fc928e4d3f8e86018014abc49d978b4d..abc2ca0455cdb5c26148150f01bc5f30067faf79 100644 (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;
index 46f47f10429ee162943b4047223d2c38d0eeb7d6..b22c8319cc0710e631032a11c50c3508de9cb98d 100644 (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;
index 7ee5c04813ad7ab300282fc2bb9ab5896b30ebcd..cc5311fa5a0642854f29b55422999e5e6358bfb0 100644 (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);                           \
index f52593cf0a7c250be7eeeca61e946699c98a3904..ea9d8d0cc874d323e3ab03965eb1ddbd73ab043e 100644 (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);                                \
index be4f22ebb35da52f0bec840b6ae6c75f25ac2ebc..26f835e7935e7d8fdf910256660f9abb164f823f 100644 (file)
@@ -5,7 +5,7 @@
 
 int volatile v;
 
-__attribute__((noinline,noclone))
+__attribute__((noinline,noclone,noipa))
 void inc_v (void)
 {
   v++;
index 5606225aebc44329df235d555cb799a41738a98a..608aea81677204b7158153fe1cfcd17d5c5e3353 100644 (file)
@@ -42,7 +42,7 @@ void test1 (void)
 
 /**********************************************************************/
 
-__attribute__((noinline,noclone))
+__attribute__((noinline,noclone,noipa))
 void inc_r2 (void)
 {
   reg2++;
index 9030db00fdea2662b119c74bbecc524e004c54ce..2a83bcdc2d55a14d7d97f633049308d3589d0832 100644 (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);
index 386dc322afa945e0f924cc733cc35f727e238daa..96c1c9346cc6ac4d1dc628d2a17376240363cc52 100644 (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)
 {
index 975afb27700ed4deaf18c26d4cac17d83072bb00..22b746b76953b964c7491f666e5c33e640aafb45 100644 (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;
index db0cc72e590ad02bfb73addc40853ccc4c88e96b..60265d9e97d28d4c26d8d96b9ed46ac54aeed3f8 100644 (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;
index c2bcbacec37052102bffde1c4bccd304bbe0dc6c..6890caadb9fb985860dd12094ed03a3440011ad4 100644 (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
index c5f5b0450e671febffb768e6030896ac0840ed68..d74a6385110f4c0bed034d06030945b18ed092ef 100644 (file)
@@ -4,7 +4,7 @@
 
 char c = 42;
 
-void __attribute__((noinline,noclone))
+void __attribute__((noinline,noclone,noipa))
 pr39633 (char a)
 {
   a >>= 7;
index 88ce8cd86cd43c1f39942647165d1981f65f5387..fe5714e528b521767575ec0b6e6c2d97d6bc9c22 100644 (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;
index cac1bdaf22c5b2c321210d01c9bb5a4a8bcfeeb6..8e101a5190d266e597524495b38fc3eb94106f38 100644 (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;
index 36df852a012f565c3a901b099fd0722795e9f34d..5740a33d66aa2cc30d6d79956d03f48917954b7f 100644 (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, ...)
 {
index 1934ccfd29477a91b4cc1eadc56575d52bff09cd..525b26a286dfaf140658f9a7e5e5fb15bf86f774 100644 (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)
index 7fe11ec390a7d2a41299a2efcda419787e94c0a0..4cbd00dc922b47ca7c1115fd526e309e4c6851f0 100644 (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);
index 01b14e9b1672f0ecb4bb660cd56d560609b63fcd..c42db9625b7df6b7ddcd33ea47f14e61a1a87172 100644 (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";
index 77a5b76f53d7529d2acdbb57417b31d831a16d23..1b0123ea06d8c002e70e5e39a1cfa681288b69fa 100644 (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";
index c31a4a9dda541c5ea8b85827e66c58fe753cf8aa..edce20890ced987d5c4c47eedf3933d1d3844c0c 100644 (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;
index 9fd5fd3b5f57db5fb836e0ccf92a85c0cc860c95..5205e2617b6f211fe601accafe9b9ce57910be2d 100644 (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");
index cc07128c73b822b64f644124c2d6811dba121c55..a222077b0e3b371123285e1d60361f9d00c93ef2 100644 (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__
index c3ba7da69a86495ef1913daa1980a290c8985a75..ac54c0b7528c8282e1994a73bc4068ad610b2aac 100644 (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;
index e42ce912d37b9dc54df5a5c2ff612f322b75edf4..3857cf22ba0ca965f578e46db74c7a37b96dd63f 100644 (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__;
index fea991e6ac540630cf0093580b83bad06ddb248b..68b9232bc68aaf70ab1a8a2fa80d59a69d5d7097 100644 (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__;
index 84ab7fd9fb1e7b11ea6e3c927a2d6f4209e7914a..4ae3cac802d3d07ccbea3c9b6e12a7ff7f6a8ad8 100644 (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__;
index 72cbeee3ead412646ade006d1ef3c3bff6fbf0d1..85dee40c3098de29adca5c58b44afb44f638c1fe 100644 (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__;
index f739c0d46d334b691c77a9fbb070b865a3cbab0e..d04de453781e79efebabe567bfcc82156419e3a7 100644 (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;                   \
index e3915e3d8c85999088df2c4033e80cca68479209..4b8c1a4059d628be8e5303add6ad49b8147144ce 100644 (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;               \
index 014627a9314961fdd78da9407132c0e583b067aa..15469d8338206aa9feb1f4e64231117c75ffa593 100644 (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;                 \
index 409a4d045102217fcbf28e09cf9cebf43de0c4af..d514650875fcd21f790f312b4eb1379b23f473fd 100644 (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;               \
index 60ded19d4b64127bc085c30aa25587b2eade21d4..6bc70407c50d0ed7e6f490f605c885299a984dd0 100644 (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;
index 1545c55ca3ea9432bc58f38143cdd29525473e21..f2ed602e98895af1e07165cdb8f988c60efa1b32 100644 (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];