re PR libgomp/45351 (many unaligned accesses in libgomp tests)
authorRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Mon, 25 Jul 2011 15:39:52 +0000 (15:39 +0000)
committerRainer Orth <ro@gcc.gnu.org>
Mon, 25 Jul 2011 15:39:52 +0000 (15:39 +0000)
PR libgomp/45351
* config/osf/sem.h: New file.
* configure.tgt (alpha*-dec-osf*): Prepend osf to config_path.

From-SVN: r176755

libgomp/ChangeLog
libgomp/config/osf/sem.h [new file with mode: 0644]
libgomp/configure.tgt

index 9225401fb3563a375c2896ae886f3f1d82178146..c6d9ffd9c95d6d3853d03cf9dc90f789a53dd5bf 100644 (file)
@@ -1,3 +1,9 @@
+2011-07-25  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       PR libgomp/45351
+       * config/osf/sem.h: New file.
+       * configure.tgt (alpha*-dec-osf*): Prepend osf to config_path.
+
 2011-07-18  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
        PR target/49541
diff --git a/libgomp/config/osf/sem.h b/libgomp/config/osf/sem.h
new file mode 100644 (file)
index 0000000..7dcb542
--- /dev/null
@@ -0,0 +1,53 @@
+/* Copyright (C) 2011 Free Software Foundation, Inc.
+
+   This file is part of the GNU OpenMP Library (libgomp).
+
+   Libgomp is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
+   WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+   FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+   more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* This is a variant of config/posix/sem.h for Tru64 UNIX.  The librt
+   sem_init implementation assumes int (4-byte) alignment for sem_t, while
+   the type only requires short (2-byte) alignment.  This mismatch causes
+   lots of unaligned access warnings from the kernel, so enforce that
+   alignment.  */
+
+#ifndef GOMP_SEM_H
+#define GOMP_SEM_H 1
+
+#include <semaphore.h>
+
+typedef sem_t gomp_sem_t __attribute__((aligned (__alignof__ (int))));
+
+static inline void gomp_sem_init (gomp_sem_t *sem, int value)
+{
+  sem_init (sem, 0, value);
+}
+
+extern void gomp_sem_wait (gomp_sem_t *sem);
+
+static inline void gomp_sem_post (gomp_sem_t *sem)
+{
+  sem_post (sem);
+}
+
+static inline void gomp_sem_destroy (gomp_sem_t *sem)
+{
+  sem_destroy (sem);
+}
+#endif /* GOMP_SEM_H  */
index 429c8e6bca29deec55121509d4c401ba4e45d5a2..aeb9bc102165dd6713533a6d79f8d7a34ca8014f 100644 (file)
@@ -129,6 +129,11 @@ case "${target}" in
        XLDFLAGS="${XLDFLAGS} -lpthread"
        ;;
 
+  alpha*-dec-osf*)
+       # Use Tru64 UNIX-specific sem.h version.
+       config_path="osf posix"
+       ;;
+
   mips-sgi-irix6*)
        # Need to link with -lpthread so libgomp.so is self-contained.
        XLDFLAGS="${XLDFLAGS} -lpthread"