Re: Patch for fortran/62536 and fortran/66175
> 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
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
> 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
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
> -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)
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
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
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
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
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
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
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/