aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/pr15785-1.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.dg/pr15785-1.c')
-rw-r--r--gcc/testsuite/gcc.dg/pr15785-1.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/pr15785-1.c b/gcc/testsuite/gcc.dg/pr15785-1.c
new file mode 100644
index 00000000000..47cd3d7b01b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr15785-1.c
@@ -0,0 +1,42 @@
+/* { dg-do link } */
+
+extern void link_error ();
+
+void a (int x) {
+ if (~ (~x) - x)
+ link_error ();
+}
+void b (int x) {
+ if (- (-x) - x)
+ link_error ();
+}
+
+void c (int x) {
+ if (!(- (~x) - x))
+ link_error ();
+}
+
+void d (int x) {
+ if (!(~ (-x) - x))
+ link_error ();
+}
+
+void e (int x) {
+ if (x + ~(x - 1))
+ link_error ();
+}
+
+void f (int x) {
+ if (x + ~(x + (-1)))
+ link_error ();
+}
+
+int main (int argc, char *argv[]) {
+ a(argc);
+ b(argc);
+ c(argc);
+ d(argc);
+ e(argc);
+ f(argc);
+ return 0;
+}