Re: Patch for fortran/62536 and fortran/66175

2015-08-01 Thread FX
> This patch cleans up nested blocks when there's an unexpected end of a 
> compilation unit (66175), and it handles cleaned-up blocks gracefully 
> (62536).  I've run "make check-fortran" with the attached test cases.

The patch is OK.

But the question I missed in my earlier email was: do you have a copyright 
assignment in place with the FSF?

FX

Re: Use cmpstr and cmpstrn optabs

2015-08-01 Thread Kaz Kojima
Richard Sandiford  wrote:
> This patch converts the code to do everything via the optabs interface.
> This required a change to the sh.md cmpstrn pattern, where the length
> predicate was "immediate_operand" but where the expander code wanted
> to handle nonimmediates too.  I also removed the now-redundant
> force_operand of the length in the rx.md pattern (because the
> predicate is now enforced and already an operand).
> 
> The check whether "target" has insn_mode is performed by
> create_output_operand so we no longer need to check it in
> the builtins.c code too.
> 
> Bootstrapped & regression-tested on x86_64-linux-gnu.  Also tested by
> building ft32-elf, s390x-linux-gnu, m32c-elf, rx-elf and sh4-elf
> and checking that (with the appropriate target flags) the optabs
> are working for various strcmp and strncmp calls.  OK to install?

SH portion looks fine.  No new failures with the patch on
sh4-unknown-linux-gnu.

Regards,
kaz


Re: Patch for fortran/62536 and fortran/66175

2015-08-01 Thread FX
> No, I don't, but I would be happy to assign copyright. How do I do that? I've 
> read this: https://www.fsf.org/licensing/assigning.html
> and it says I should "email the maintainer of the program communicating [my] 
> desire to assign copyright.”

As I understand it, you need to fill this form: 
http://git.savannah.gnu.org/cgit/gnulib.git/plain/doc/Copyright/request-assign.future
 (with “GCC” being the “package you’re contributing to”) and send it by email 
to ass...@gnu.org to get the process started.

In past times, it used to take a little time. I don’t know what the current 
situation is.

FX

[Patch, fortran] PR67091 - Bad result for type-bound procedures returning pointers to the intrinsic function ASSOCIATED

2015-08-01 Thread Paul Richard Thomas
Dear All,

I have committed a patch for this PR as revision 226464, since it is
utterly trivial and obvious.

I will wait a few days before committing it to 5 branch.

Cheers

Paul

2015-08-01  Paul Thomas  

PR fortran/67091
* trans-intrinsic.c (gfc_conv_associated): Add the pre and post
blocks for the second argument to se.

2015-08-01  Paul Thomas  

PR fortran/67091
* gfortran.dg/associated_target_6.f03: New test


RE: [PATCH, MIPS, Ping] Inline memcpy for MipsR6

2015-08-01 Thread Moore, Catherine


> -Original Message-
> From: Simon Dardis [mailto:simon.dar...@imgtec.com]
> Sent: Wednesday, July 29, 2015 4:29 AM
> To: gcc-patches@gcc.gnu.org
> Cc: Moore, Catherine
> Subject: [PATCH, MIPS, Ping] Inline memcpy for MipsR6
> 
> > This patch enables inline memcpy for R6 which was previously disabled and
> adds support for expansion when source and destination are at least half-
> word aligned.
> 
> https://gcc.gnu.org/ml/gcc-patches/2015-07/msg00749.html
> 

Hi Simon,

Two things need to be fixed up with this patch before committing.

1.  The new test inline-memcpy-2.c should not be run with -OS (like the other 
new tests that you submitted).

2.  Your patch is against older source than what is currently in the 
repository, causing this hunk not to apply cleanly:

@@ -8311,8 +8321,8 @@ bool
 mips_expand_block_move (rtx dest, rtx src, rtx length)
 {
   if (!ISA_HAS_LWL_LWR
-   && (MEM_ALIGN (src) < BITS_PER_WORD
-  || MEM_ALIGN (dest) < BITS_PER_WORD))
+  && (MEM_ALIGN (src) < MIPS_MIN_MOVE_MEM_ALIGN
+ || MEM_ALIGN (dest) < MIPS_MIN_MOVE_MEM_ALIGN))
 return false;

   if (CONST_INT_P (length))


The correct patch should like this:

@@ -7780,8 +7790,9 @@
 bool
 mips_expand_block_move (rtx dest, rtx src, rtx length)
 {
-  /* Disable entirely for R6 initially.  */
-  if (!ISA_HAS_LWL_LWR)
+  if (!ISA_HAS_LWL_LWR
+  && (MEM_ALIGN (src) < MIPS_MIN_MOVE_MEM_ALIGN
+ || MEM_ALIGN (dest) < MIPS_MIN_MOVE_MEM_ALIGN))
 return false;

   if (CONST_INT_P (length))

Okay with those changes.
Thanks,
Catherine


Re: [PATCH], PowerPC IEEE 128-bit patch #4c (revised)

2015-08-01 Thread David Edelsohn
On Thu, Jul 30, 2015 at 3:23 PM, Michael Meissner
 wrote:
> Seger pointed out that the altivec_high_bit insn was not safe if it was called
> when it could not allocate pseudos. I have removed that insn in this patch. I
> will revise the patch.  I had meant to tie it in with easy_altivec_constant
> originally, and I will do a patch with that change.
>
> Is this revised patch ok to install?  There are no references to
> altivec_high_bit in this patch set, so I just made sure it builds ok just
> removing the insn.
>
> 2015-07-30  Michael Meissner  
>
> * config/rs6000/vector.md (VEC_L): Add KFmode and TFmode.
> (VEC_M): Likewise.
> (VEC_N): Likewise.
> (mov, VEC_M iterator): Add support for IEEE 128-bit floating
> point in VSX registers.
>
> * config/rs6000/constraints.md (wb constraint): Document unused
> w constraint.
> (we constraint): Likewise.
> (wo constraint): Likewise.
> (wp constraint): New constraint for IEEE 128-bit floating point in
> VSX registers.
> (wq constraint): Likewise.
>
> * config/rs6000/predicates.md (easy_fp_constant): Add support for
> IEEE 128-bit floating point in VSX registers.
> (easy_scalar_constant): Likewise.
>
> * config/rs6000/rs6000.c (rs6000_debug_reg_global): Add new
> constraints (wp, wq) for IEEE 128-bit floating point in VSX
> registers.
> (rs6000_init_hard_regno_mode_ok): Likewise.
>
> * config/rs6000/vsx.md (VSX_LE_128): Add support for IEEE 128-bit
> floating point in VSX registers.
> (VSX_L): Likewise.
> (VSX_M): Likewise.
> (VSX_M2): Likewise.
> (VSm): Likewise.
> (VSs): Likewise.
> (VSr): Likewise.
> (VSa): Likewise.
> (VSv): Likewise.
> (vsx_le_permute_): Add support to properly swap bytes for
> IEEE 128-bit floating point in VSX registers on little endian.
> (vsx_le_undo_permute_): Likewise.
> (vsx_le_perm_load_): Likewise.
> (vsx_le_perm_store_): Likewise.
> (splitters for IEEE 128-bit fp moves): Likewise.
>
> * config/rs6000/rs6000.h (enum r6000_reg_class_enum): Add wp and
> wq constraints.
>
> * config/rs6000/altivec.md (VM): Add support for IEEE 128-bit
> floating point in VSX registers.
> (VM2): Likewise.
>
> * doc/md.text (Machine Constraints): Document wp and wq
> constraints on PowerPC.

This is okay.

Thanks, David


[google][gcc-4.9][committed] Add inexpensive bounds checks to std::array

2015-08-01 Thread Paul Pluzhnikov
Greetings,

For google b/9650176, attached patch adds bounds checks to std::array
and updates expected line numbers in tests.

This is similar to the checks that we do for std::vector.
See also https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56109

Committed as r226465.

Thanks,
-- 
Paul Pluzhnikov
Index: libstdc++-v3/include/std/array
===
--- libstdc++-v3/include/std/array  (revision 226462)
+++ libstdc++-v3/include/std/array  (working copy)
@@ -50,7 +50,18 @@
 
   static constexpr _Tp*
   _S_ptr(const _Type& __t, std::size_t __n) noexcept
+#if __google_stl_debug_array
+  {
+   return __n < _Nm
+ ? const_cast<_Tp*>(std::__addressof(__t[__n]))
+  : (std::__throw_out_of_range_fmt(__N("array::_S_ptr: __n "
+   "(which is %zu) >= size() "
+   "(which is %zu)"),
+   __n, _Nm), nullptr);
+  }
+#else
   { return const_cast<_Tp*>(std::__addressof(__t[__n])); }
+#endif
 };
 
  template
Index: libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc
===
--- libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc   
(revision 226462)
+++ libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc   
(working copy)
@@ -28,6 +28,6 @@
 int n2 = std::get<1>(std::move(a));
 int n3 = std::get<1>(ca);
 
-// { dg-error "static assertion failed" "" { target *-*-* } 274 }
-// { dg-error "static assertion failed" "" { target *-*-* } 283 }
-// { dg-error "static assertion failed" "" { target *-*-* } 291 }
+// { dg-error "static assertion failed" "" { target *-*-* } 285 }
+// { dg-error "static assertion failed" "" { target *-*-* } 294 }
+// { dg-error "static assertion failed" "" { target *-*-* } 302 }
Index: 
libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc
===
--- 
libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc 
(revision 226462)
+++ 
libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc 
(working copy)
@@ -23,4 +23,4 @@
 
 typedef std::tuple_element<1, std::array>::type type;
 
-// { dg-error "static assertion failed" "" { target *-*-* } 320 }
+// { dg-error "static assertion failed" "" { target *-*-* } 331 }


Re: [C++/66443] virtual base of abstract class

2015-08-01 Thread Nathan Sidwell

On 07/17/15 15:59, Nathan Sidwell wrote:

On 07/17/15 15:42, Jason Merrill wrote:

On 07/08/2015 10:50 AM, Nathan Sidwell wrote:

On 06/30/15 19:21, Nathan Sidwell wrote:

On 06/30/15 00:19, Jason Merrill wrote:

On 06/29/2015 06:57 PM, Nathan Sidwell wrote:

* method.c (synthesized_method_walk): Skip virtual bases of
abstract classes in C++14 mode.


Let's not limit this to C++14 mode; most DRs apply to earlier
standards as well.


curiously opening it up leads to some test failures related to
determining the exception specifier for implicit ctors and dtors.  Not
had time to investigate that yet ...


If C++98 mode is problematic, we can limit this to C++11 and up.


I'm not yet sure.  The failure mode I saw surprised me, and suggests there's
something wrong with the patch.  Sadly, I've got interrupted by other stuff.


Ok, this patch fixes things up.  The previous version was a little too lax, 
extending the logic of DR1611 to all synthesized functions.  However, this broke 
virtual synthesized dtors, in that an abstract class's synthesized dtor's 
exception specification would not take account of any virtual base dtor 
exception specs.  This would mean that a non-abstract derived class's 
synthesized dtor might end up with a throwing exception spec (because the 
virtual base's dtor did), and that would be looser than the exception spec on 
the abstract base's non-callable synthesized dtor.  And that fails the virtual 
overriding checks.


So this restricts the skipping to exactly what DR 1611 discusses -- default 
constructors of virtual bases of an abstract class.  Those can never be virtual, 
so we don't end up with the above problem in that case.


Jason, WDYT?

nathan
2015-08-01  Nathan Sidwell  

	cp/
	PR c++/66443
	* init.c (emit_mem_initializers): Do not emit initializers for
	virtual bases of abstract classes.
	* method.c (synthesized_method_walk): Skip virtual bases of
	abstract classes in C++14 mode.

	testsuite/
	PR c++/66443
	* cpp1y/pr66443.C: New test.

Index: cp/init.c
===
--- cp/init.c	(revision 226444)
+++ cp/init.c	(working copy)
@@ -1140,9 +1140,7 @@ emit_mem_initializers (tree mem_inits)
 	}
 
   /* Initialize the base.  */
-  if (BINFO_VIRTUAL_P (subobject))
-	construct_virtual_base (subobject, arguments);
-  else
+  if (!BINFO_VIRTUAL_P (subobject))
 	{
 	  tree base_addr;
 
@@ -1156,6 +1154,8 @@ emit_mem_initializers (tree mem_inits)
   tf_warning_or_error);
 	  expand_cleanup_for_base (subobject, NULL_TREE);
 	}
+  else if (!ABSTRACT_CLASS_TYPE_P (current_class_type))
+	construct_virtual_base (subobject, arguments);
 }
   in_base_initializer = 0;
 
Index: cp/method.c
===
--- cp/method.c	(revision 226444)
+++ cp/method.c	(working copy)
@@ -1506,7 +1506,13 @@ synthesized_method_walk (tree ctype, spe
   vbases = CLASSTYPE_VBASECLASSES (ctype);
   if (vec_safe_is_empty (vbases))
 /* No virtual bases to worry about.  */;
-  else if (!assign_p)
+  else if (!assign_p
+	   /* DR 1611 ignores virtual bases of abstract classes for
+	  the default constructor.  Such ctors can never be
+	  directly called.  Thus their deletion should not affect
+	  whether they are deleted in this class.   */
+	   && (!ABSTRACT_CLASS_TYPE_P (ctype) || sfk != sfk_constructor
+	   || inherited_parms))
 {
   if (constexpr_p)
 	*constexpr_p = false;
Index: testsuite/g++.dg/other/pr66443.C
===
--- testsuite/g++.dg/other/pr66443.C	(revision 0)
+++ testsuite/g++.dg/other/pr66443.C	(working copy)
@@ -0,0 +1,21 @@
+// { dg-do compile }
+
+class A {
+public:
+A( int ) {  }
+};
+
+// B's virtual base is ignored for default ctor determination as B is
+// abstract.  DR1611 &  DR1658
+
+class B: virtual public A {
+public:
+virtual void do_something() = 0;
+};
+
+class C: public B {
+public:
+C(): A( 1 ) {  }
+virtual void do_something() {  }
+};
+


Re: offload data version number

2015-08-01 Thread Nathan Sidwell

On 07/31/15 12:10, Jakub Jelinek wrote:


This will hopefully be just GOMP_4.1 instead in the end, but it can
change when gomp-4_1-branch is merged to trunk, we don't guarantee
ABI stability at this point.


Sure.


I'd prefer version to go after devicep argument rather than before.

Fixed.


And really don't have ver_func vs. unver_func, just a single
callback that will take the version argument too (again, if possible
after target_id).


Fixed (& elsewhere).  The patch should be checked for intelmic if possible 
(Ilya?).  The  changes there are very mechanical so I'm not expecting a problem.


We don't need to  make the initial value of GOMP_VERSION non-zero, because the 
absence of the GOMP_OFFLOAD_version func will distinguish out of date plugins at 
this point.




+
+  if (DLSYM_OPT (version, version))


I'd prefer requiring version always (i.e. DLSYM (version);
plus the v != GOMP_VERSION checking).


Fixed.

ok?  I'll commit a version of this to gomp4 branch shortly.

nathan

2015-08-01  Nathan Sidwell  

	gcc/
	* config/nvptx/mkoffload.c (process): Replace
	GOMP_offload_{,un}register with GOMP_offload_{,un}register_ver.

	libgomp/
	* libgomp.map: Add 4.0.2 version.
	* target.c (offload_image_descr): Add version field.
	(gomp_load_image_to_device): Add version argument.  Adjust plugin
	call.  Improve load mismatch diagnostic.
	(gomp_unload_image_from_device): Add version argument.  Adjust plugin
	call.
	(GOMP_offload_regster): Make stub function, move bulk to ...
	(GOMP_offload_register_ver): ... here.  Process version argument.
	(GOMP_offload_unregister): Make stub function, move bulk to ...
	(GOMP_offload_unregister_ver): ... here.  Process version argument.
	(gomp_init_device): Process version field.
	(gomp_unload_device): Process version field.
	(gomp_load_plugin_for_device): Reimplement DLSYM & DLSYM_OPT
	macros.  Check plugin version.
	* libgomp.h (gomp_device_descr): Add version function field.  Adjust
	loader and unloader types.
	* oacc-host.c (host_dispatch): Adjust.
	* plugin/plugin-nvptx.c: Include gomp-constants.h.
	(GOMP_OFFLOAD_version): New.
	(GOMP_OFFLOAD_load_image): Add version arg and check it.
	(GOMP_OFFLOAD_unload_image): Likewise.
	* plugin/plugin-host.c: Include gomp-constants.h.
	(GOMP_OFFLOAD_version): New.
	(GOMP_OFFLOAD_load_image): Add version arg.
	(GOMP_OFFLOAD_unload_image): Likewise.
	* oacc-host.c (host_dispatch): Init version field.

	liboffloadmic/
	* plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_version): New.
	(GOMP_OFFLOAD_load_image): Add version arg and check it.
	(GOMP_OFFLOAD_unload_image): Likewise.

	include/
	* gomp-constants.h (GOMP_VERSION, GOMP_VERSION_NVIDIA_PTX,
	GOMP_VERSION_INTEL_MIC): New.
	(GOMP_VERSION_PACK, GOMP_VERSION_LIB, GOMP_VERSION_DEV): New.

Index: gcc/config/nvptx/mkoffload.c
===
--- gcc/config/nvptx/mkoffload.c	(revision 226462)
+++ gcc/config/nvptx/mkoffload.c	(working copy)
@@ -881,10 +881,10 @@ process (FILE *in, FILE *out)
 	   "extern \"C\" {\n"
 	   "#endif\n");
 
-  fprintf (out, "extern void GOMP_offload_register"
-	   " (const void *, int, const void *);\n");
-  fprintf (out, "extern void GOMP_offload_unregister"
-	   " (const void *, int, const void *);\n");
+  fprintf (out, "extern void GOMP_offload_register_ver"
+	   " (unsigned, const void *, int, const void *);\n");
+  fprintf (out, "extern void GOMP_offload_unregister_ver"
+	   " (unsigned, const void *, int, const void *);\n");
 
   fprintf (out, "#ifdef __cplusplus\n"
 	   "}\n"
@@ -894,15 +894,19 @@ process (FILE *in, FILE *out)
 
   fprintf (out, "static __attribute__((constructor)) void init (void)\n"
 	   "{\n"
-	   "  GOMP_offload_register (__OFFLOAD_TABLE__, %d/*NVIDIA_PTX*/,\n"
-	   " &target_data);\n"
-	   "};\n", GOMP_DEVICE_NVIDIA_PTX);
+	   "  GOMP_offload_register_ver (%#x, __OFFLOAD_TABLE__,"
+	   "%d/*NVIDIA_PTX*/, &target_data);\n"
+	   "};\n",
+	   GOMP_VERSION_PACK (GOMP_VERSION, GOMP_VERSION_NVIDIA_PTX),
+	   GOMP_DEVICE_NVIDIA_PTX);
 
   fprintf (out, "static __attribute__((destructor)) void fini (void)\n"
 	   "{\n"
-	   "  GOMP_offload_unregister (__OFFLOAD_TABLE__, %d/*NVIDIA_PTX*/,\n"
-	   "   &target_data);\n"
-	   "};\n", GOMP_DEVICE_NVIDIA_PTX);
+	   "  GOMP_offload_unregister_ver (%#x, __OFFLOAD_TABLE__,"
+	   "%d/*NVIDIA_PTX*/, &target_data);\n"
+	   "};\n",
+	   GOMP_VERSION_PACK (GOMP_VERSION, GOMP_VERSION_NVIDIA_PTX),
+	   GOMP_DEVICE_NVIDIA_PTX);
 }
 
 static void
Index: libgomp/libgomp.map
===
--- libgomp/libgomp.map	(revision 226462)
+++ libgomp/libgomp.map	(working copy)
@@ -234,6 +234,12 @@ GOMP_4.0.1 {
 	GOMP_offload_unregister;
 } GOMP_4.0;
 
+GOMP_4.0.2 {
+  global:
+	GOMP_offload_register_ver;
+	GOMP_offload_unregister_ver;
+} GOMP_4.0.1;
+
 OACC_2.0 {
   global:
 	acc_get_num_devices;
Index: libgomp/target.c
===

Re: offload data version number

2015-08-01 Thread Nathan Sidwell

On 08/01/15 20:06, Nathan Sidwell wrote:


ok?  I'll commit a version of this to gomp4 branch shortly.


this is the gomp4 committed version.

nathan

2015-08-01  Nathan Sidwell  

	include/
	* gomp-constants.h (GOMP_VERSION_INTEL_MIC): New.

	libgomp/
	* plugin/plugin-nvptx.c (GOMP_OFFLOAD_load_image_ver): Rename to ...
	(GOMP_OFFLOAD_load_image): ... here.  Swap version and ord args.
	Adjust version check and mesage.
	(GOMP_OFFLOAD_unload_image_ver): Rename to ...
	(GOMP_OFFLOAD_unload_image): ... here.  Swap version and ord args.
	* oacc-host.c: Include gomp-constants.h.
	(host_version): New.
	(host_load_image, host_unload_image): Add version arg.
	(host_dispatch): Adjust.
	* target.c (gomp_load_image_to_device): Swap version and devicep
	args. Adjust plugin load calling.  Adjust all callers.
	* target.c (gomp_unload_image_from_device): Swap version and devicep
	args. Adjust plugin unload calling. Adjust all callers.
	(load_plugin_for_device): Always look for version function and
	check it.  Adjust load and unload call lookup.
	* libgomp.h: Adjustt load and unload plugin fields.

	liboffloadmic/
	* plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_version): New.
	(GOMP_OFFLOAD_load_image): Add version arg and check it.
	(GOMP_OFFLOAD_unload_image): Likewise.

Index: libgomp/plugin/plugin-nvptx.c
===
--- libgomp/plugin/plugin-nvptx.c	(revision 226462)
+++ libgomp/plugin/plugin-nvptx.c	(working copy)
@@ -1650,9 +1650,9 @@ GOMP_OFFLOAD_version (void)
number ORD.  Allocate and return TARGET_TABLE.  */
 
 int
-GOMP_OFFLOAD_load_image_ver (unsigned version, int ord,
-			 const void *target_data,
-			 struct addr_pair **target_table)
+GOMP_OFFLOAD_load_image (int ord, unsigned version,
+			 const void *target_data,
+			 struct addr_pair **target_table)
 {
   CUmodule module;
   const char *const *var_names;
@@ -1665,9 +1665,9 @@ GOMP_OFFLOAD_load_image_ver (unsigned ve
   struct ptx_image_data *new_image;
   struct ptx_device *dev;
 
-  if (GOMP_VERSION_DEV (version) != GOMP_VERSION_NVIDIA_PTX)
+  if (GOMP_VERSION_DEV (version) > GOMP_VERSION_NVIDIA_PTX)
 GOMP_PLUGIN_fatal ("Offload data incompatible with PTX plugin"
-		   " (version %u ! %u)",
+		   " (expected %u, received %u)",
 		   GOMP_VERSION_NVIDIA_PTX, GOMP_VERSION_DEV (version));
   
   GOMP_OFFLOAD_init_device (ord);
@@ -1739,13 +1739,12 @@ GOMP_OFFLOAD_load_image_ver (unsigned ve
function descriptors allocated by G_O_load_image.  */
 
 void
-GOMP_OFFLOAD_unload_image_ver (unsigned version, int ord,
-			   const void *target_data)
+GOMP_OFFLOAD_unload_image (int ord, unsigned version, const void *target_data)
 {
   struct ptx_image_data *image, **prev_p;
   struct ptx_device *dev = ptx_devices[ord];
 
-  if (GOMP_VERSION_DEV (version) != GOMP_VERSION_NVIDIA_PTX)
+  if (GOMP_VERSION_DEV (version) > GOMP_VERSION_NVIDIA_PTX)
 return;
   
   pthread_mutex_lock (&dev->image_lock);
Index: libgomp/oacc-host.c
===
--- libgomp/oacc-host.c	(revision 226462)
+++ libgomp/oacc-host.c	(working copy)
@@ -28,6 +28,7 @@
 
 #include "libgomp.h"
 #include "oacc-int.h"
+#include "gomp-constants.h"
 
 #include 
 #include 
@@ -69,8 +70,15 @@ host_fini_device (int n __attribute__ ((
 {
 }
 
+static unsigned
+host_version (void)
+{
+  return GOMP_VERSION;
+}
+
 static int
 host_load_image (int n __attribute__ ((unused)),
+		 unsigned v __attribute__ ((unused)),
 		 const void *t __attribute__ ((unused)),
 		 struct addr_pair **r __attribute__ ((unused)))
 {
@@ -79,6 +87,7 @@ host_load_image (int n __attribute__ ((u
 
 static void
 host_unload_image (int n __attribute__ ((unused)),
+		   unsigned v __attribute__ ((unused)),
 		   const void *t __attribute__ ((unused)))
 {
 }
@@ -203,9 +212,9 @@ static struct gomp_device_descr host_dis
 .get_num_devices_func = host_get_num_devices,
 .init_device_func = host_init_device,
 .fini_device_func = host_fini_device,
-.version_func = NULL,
-.load_image = {.unver_func = host_load_image},
-.unload_image = {.unver_func = host_unload_image},
+.version_func = host_version,
+.load_image_func = host_load_image,
+.unload_image_func = host_unload_image,
 .alloc_func = host_alloc,
 .free_func = host_free,
 .dev2host_func = host_dev2host,
Index: libgomp/target.c
===
--- libgomp/target.c	(revision 226462)
+++ libgomp/target.c	(working copy)
@@ -652,8 +652,7 @@ gomp_update (struct gomp_device_descr *d
emitting variable and functions in the same order.  */
 
 static void
-gomp_load_image_to_device (unsigned version,
-			   struct gomp_device_descr *devicep,
+gomp_load_image_to_device (struct gomp_device_descr *devicep, unsigned version,
 			   const void *host_table, const void *target_data,
 			   bool is_register_lock)
 {
@@ -671,17 +670,9 @@ gomp_load_image_to_devic

[gomp4] note why 3 is missing

2015-08-01 Thread Nathan Sidwell
I committed this to gomp4 branch to note why device type 3 is missing. 
Someone's bound to forget ...


nathan
2015-08-01  Nathan Sidwell  

	include/
	* gomp-constants.h: Note why device 3 is missing.

	libgomp/
	* openacc.h: Note why device 3 is missing.
	* openacc.f90: Likewise.
	* openacc_lib.h: Likewise.

Index: include/gomp-constants.h
===
--- include/gomp-constants.h	(revision 226469)
+++ include/gomp-constants.h	(working copy)
@@ -109,11 +109,11 @@ enum gomp_map_kind
 
 
 /* Device codes.  Keep in sync with
-   libgomp/{openacc.h,openacc.f90,openacc_lib.h}:acc_device_t as well as
-   libgomp/libgomp_target.h.  */
+   libgomp/{openacc.h,openacc.f90,openacc_lib.h}:acc_device_t.  */
 #define GOMP_DEVICE_NONE		0
 #define GOMP_DEVICE_DEFAULT		1
 #define GOMP_DEVICE_HOST		2
+/*  3 obsoleted.  */
 #define GOMP_DEVICE_NOT_HOST		4
 #define GOMP_DEVICE_NVIDIA_PTX		5
 #define GOMP_DEVICE_INTEL_MIC		6
@@ -147,6 +147,7 @@ enum gomp_map_kind
 /* Versions of libgomp and device-specific plugins.  */
 #define GOMP_VERSION	0
 #define GOMP_VERSION_NVIDIA_PTX 1
+#define GOMP_VERSION_INTEL_MIC 0
 
 #define GOMP_VERSION_PACK(LIB, DEV) (((LIB) << 16) | (DEV))
 #define GOMP_VERSION_LIB(PACK) (((PACK) >> 16) & 0x)
Index: libgomp/openacc.h
===
--- libgomp/openacc.h	(revision 226469)
+++ libgomp/openacc.h	(working copy)
@@ -53,6 +53,7 @@ typedef enum acc_device_t
 acc_device_none = 0,
 acc_device_default = 1,
 acc_device_host = 2,
+/* 3 obsoleted.  */
 acc_device_not_host = 4,
 acc_device_nvidia = 5,
 _ACC_device_hwm
Index: libgomp/openacc.f90
===
--- libgomp/openacc.f90	(revision 226469)
+++ libgomp/openacc.f90	(working copy)
@@ -43,6 +43,7 @@ module openacc_kinds
   integer (acc_device_kind), parameter :: acc_device_none = 0
   integer (acc_device_kind), parameter :: acc_device_default = 1
   integer (acc_device_kind), parameter :: acc_device_host = 2
+  ! 3 obsoleted. 
   integer (acc_device_kind), parameter :: acc_device_not_host = 4
   integer (acc_device_kind), parameter :: acc_device_nvidia = 5
 
Index: libgomp/openacc_lib.h
===
--- libgomp/openacc_lib.h	(revision 226469)
+++ libgomp/openacc_lib.h	(working copy)
@@ -38,6 +38,7 @@
   integer (acc_device_kind), parameter :: acc_device_none = 0
   integer (acc_device_kind), parameter :: acc_device_default = 1
   integer (acc_device_kind), parameter :: acc_device_host = 2
+! 3 obsoleted.
   integer (acc_device_kind), parameter :: acc_device_not_host = 4
   integer (acc_device_kind), parameter :: acc_device_nvidia = 5
 


OS X build fix

2015-08-01 Thread wispym . gcc
System
--

MacBook Pro

OS X Yosemite Version 10.10.4

XCode Version 6.4 (6E35b)

$ clang --version
Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
Target: x86_64-apple-darwin14.4.0
Thread model: posix

Building gcc-5.2.0

Problems


There were two build problems to overcome:

1) missing /usr/include directory

2) ../../../../gcc-5.2.0/libsanitizer/asan/asan_malloc_mac.cc:17:35: fatal 
error: CoreFoundation/CFBase.h: No such file or directory

How I fixed my build


1) ln -s 
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include
 /usr/

2) changed asan_malloc_mac.cc to include "CFAvailability.h" instead of CFBase.h
and copied CFAvailability.h from Xcode directly into asan directory
[ref: 
https://developer.apple.com/library/mac/releasenotes/General/APIDiffsMacOSX10_9/CoreFoundation.html]

Extra information, for completeness
---

gmp
./configure --prefix=/usr/local/gcc

mpfr
./configure --{prefix,with-gmp}=/usr/local/gcc

mpc
./configure --{prefix,with-gmp,with-mpfr}=/usr/local/gcc

gcc
../gcc-5.2.0/configure --{prefix,with-{gmp,mpfr,mpc}}=/usr/local/gcc 
--enable-languages=c,c++

--
This message was sent from a MailNull anti-spam account.  You can get
your free account and take control over your email by visiting the
following URL.

   http://mailnull.com/