summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/pr19402-2.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.dg/pr19402-2.c')
-rw-r--r--gcc/testsuite/gcc.dg/pr19402-2.c82
1 files changed, 82 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/pr19402-2.c b/gcc/testsuite/gcc.dg/pr19402-2.c
new file mode 100644
index 000000000..1902227a6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr19402-2.c
@@ -0,0 +1,82 @@
+/* { dg-do run } */
+/* { dg-options "-fno-inline -Os" } */
+
+void abort(void);
+
+
+float powif(float x, int n)
+{
+ return __builtin_powif(x, n);
+}
+
+double powi(double x, int n)
+{
+ return __builtin_powi(x, n);
+}
+
+long double powil(long double x, int n)
+{
+ return __builtin_powil(x, n);
+}
+
+
+float powcif(float x)
+{
+ return __builtin_powif(x, 5);
+}
+
+double powci(double x)
+{
+ return __builtin_powi(x, 5);
+}
+
+long double powcil(long double x)
+{
+ return __builtin_powil(x, 5);
+}
+
+
+float powicf(int n)
+{
+ return __builtin_powif(2.0, n);
+}
+
+double powic(int n)
+{
+ return __builtin_powi(2.0, n);
+}
+
+long double powicl(int n)
+{
+ return __builtin_powil(2.0, n);
+}
+
+
+int main()
+{
+ if (__builtin_powi(1.0, 5) != 1.0)
+ abort();
+ if (__builtin_powif(1.0, 5) != 1.0)
+ abort();
+ if (__builtin_powil(1.0, 5) != 1.0)
+ abort();
+ if (powci(1.0) != 1.0)
+ abort();
+ if (powcif(1.0) != 1.0)
+ abort();
+ if (powcil(1.0) != 1.0)
+ abort();
+ if (powi(1.0, -5) != 1.0)
+ abort();
+ if (powif(1.0, -5) != 1.0)
+ abort();
+ if (powil(1.0, -5) != 1.0)
+ abort();
+ if (powic(1) != 2.0)
+ abort();
+ if (powicf(1) != 2.0)
+ abort();
+ if (powicl(1) != 2.0)
+ abort();
+ return 0;
+}