Viewing file: mips16-attributes.c (1.3 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* Verify that mips16 and nomips16 attributes work, checking all combinations of calling a nomips16/mips16/default function from a nomips16/mips16/default function. */ /* { dg-do run } */ /* { dg-options "(-mips16) (REQUIRES_STDLIB)" } */
#include <stdlib.h>
#define ATTR1 __attribute__ ((nomips16)) #define ATTR2 __attribute__ ((mips16)) #define ATTR3
double ATTR1 f1 (int i, float f, double d) { return i + f + d; }
double ATTR2 f2 (int i, float f, double d) { return i + f + d; }
double ATTR3 f3 (int i, float f, double d) { return i + f + d; }
void ATTR1 g1 (int i, float f, double d) { double r = i + f + d;
if (f1 (i, f, d) != r) abort (); if (f2 (i+1, f+1, d+1) != r + 3) abort (); if (f3 (i+2, f+2, d+2) != r + 6) abort (); }
void ATTR2 g2 (int i, float f, double d) { double r = i + f + d;
if (f1 (i, f, d) != r) abort (); if (f2 (i+1, f+1, d+1) != r + 3) abort (); if (f3 (i+2, f+2, d+2) != r + 6) abort (); }
void ATTR3 g3 (int i, float f, double d) { double r = i + f + d;
if (f1 (i, f, d) != r) abort (); if (f2 (i+1, f+1, d+1) != r + 3) abort (); if (f3 (i+2, f+2, d+2) != r + 6) abort (); }
int ATTR3 main (void) { int i = 1; float f = -2.0; double d = 3.0;
g1 (i, f, d); g2 (i, f, d); g3 (i, f, d);
exit (0); }
|