int128 tests
authorJason Merrill <jason@gcc.gnu.org>
Tue, 12 Feb 2013 16:32:30 +0000 (11:32 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Tue, 12 Feb 2013 16:32:30 +0000 (11:32 -0500)
From-SVN: r195985

gcc/testsuite/g++.dg/ext/int128-3.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ext/int128-4.C [new file with mode: 0644]

diff --git a/gcc/testsuite/g++.dg/ext/int128-3.C b/gcc/testsuite/g++.dg/ext/int128-3.C
new file mode 100644 (file)
index 0000000..f62b62d
--- /dev/null
@@ -0,0 +1,12 @@
+// Test for int128 enums.
+// { dg-do compile { target int128 } }
+// { dg-options "" }
+
+enum E {
+  e1 = 0xffffffffffffffff,
+  e2, e3
+} e = e3;
+
+#define SA(I,X) int a##I[(X)? 1 : -1]
+
+SA(1, sizeof(E) == sizeof(__int128));
diff --git a/gcc/testsuite/g++.dg/ext/int128-4.C b/gcc/testsuite/g++.dg/ext/int128-4.C
new file mode 100644 (file)
index 0000000..2d30a08
--- /dev/null
@@ -0,0 +1,19 @@
+// Test for int128 arithmetic conversions.
+// { dg-do compile { target int128 } }
+// { dg-options "-std=gnu++11" }
+
+template <class T, class U> struct same;
+template <class T> struct same<T,T> { };
+#define assert_same(T,U) (same<T,U>())
+
+int main()
+{
+  long long ll;
+  unsigned long long ull;
+  __int128 i8;
+  unsigned __int128 u8;
+  assert_same (decltype (ll+i8), __int128);
+  assert_same (decltype (ull+i8), __int128);
+  assert_same (decltype (ll+u8), unsigned __int128);
+  assert_same (decltype (ull+u8), unsigned __int128);
+}