|
19 | 19 | * Copyright (c) 2015 University of Houston. All rights reserved.
|
20 | 20 | * Copyright (c) 2015-2018 Research Organization for Information Science
|
21 | 21 | * and Technology (RIST). All rights reserved.
|
22 |
| - * Copyright (c) 2017-2018 IBM Corporation. All rights reserved. |
| 22 | + * Copyright (c) 2017-2019 IBM Corporation. All rights reserved. |
23 | 23 | * Copyright (c) 2018 FUJITSU LIMITED. All rights reserved.
|
24 | 24 | * $COPYRIGHT$
|
25 | 25 | *
|
|
280 | 280 | # define __mpi_interface_deprecated__(msg) __attribute__((__deprecated__))
|
281 | 281 | # endif
|
282 | 282 | # endif
|
283 |
| -# if OMPI_ENABLE_MPI1_COMPAT |
284 |
| -# define __mpi_interface_removed__(msg) __mpi_interface_deprecated__(msg) |
285 |
| -# define OMPI_OMIT_MPI1_COMPAT_DECLS 0 |
286 |
| -# endif |
| 283 | +# endif |
| 284 | + |
| 285 | + /* For removed API, there is no portable way to cause the |
| 286 | + * C compiler to error with a nice message on the usage of |
| 287 | + * one of these symbols, so instead we use a C11 static_assert |
| 288 | + * If the user is not using a C11 compiler, they will get an |
| 289 | + * undefined reference, but no line number or nice message. |
| 290 | + * |
| 291 | + * Don't do MACRO magic for building Profiling library as it |
| 292 | + * interferes with that system. |
| 293 | + */ |
| 294 | +# if (OMPI_ENABLE_MPI1_COMPAT || OMPI_BUILDING) |
| 295 | +# define OMPI_OMIT_MPI1_COMPAT_DECLS 0 |
| 296 | +# define __mpi_interface_removed__(func, newfunc) __mpi_interface_deprecated__(#func " was removed in MPI-3.0. Use " #newfunc " instead. continuing...") |
| 297 | +# else |
| 298 | +# if (__STDC_VERSION__ >= 201112L) |
| 299 | +# define OMPI_REMOVED_STATIC_ASSERT_MSG(func, newfunc) _Static_assert(0, #func " was removed in MPI-3.0. Use " #newfunc " instead.") |
| 300 | +# define OMPI_OMIT_MPI1_COMPAT_DECLS 1 |
| 301 | +# define OMPI_REMOVED_USE_STATIC_ASSERT 1 |
| 302 | +# else |
| 303 | +# if OPAL_HAVE_ATTRIBUTE_ERROR |
| 304 | +# define __mpi_interface_removed__(func, newfunc) __attribute__((__error__(#func " was removed in MPI-3.0. Use " #newfunc " instead."))) |
| 305 | +# define OMPI_OMIT_MPI1_COMPAT_DECLS 0 |
| 306 | +# else |
| 307 | +# define OMPI_OMIT_MPI1_COMPAT_DECLS 1 |
| 308 | +# define OMPI_REMOVED_USE_STATIC_ASSERT 0 |
| 309 | +# endif |
| 310 | +# endif |
| 311 | +>>>>>>> 94f21129... Fixes Issue 6278 (removed prototypes only warning) |
287 | 312 | # endif
|
288 | 313 | # endif
|
289 | 314 | #endif
|
|
298 | 323 | #endif
|
299 | 324 |
|
300 | 325 | #if !defined(__mpi_interface_removed__)
|
301 |
| -# define __mpi_interface_removed__(msg) |
| 326 | +# define __mpi_interface_removed__(A,B) |
| 327 | +#endif |
| 328 | + |
| 329 | +#if !defined(OMPI_REMOVED_STATIC_ASSERT_MSG) |
| 330 | +# define OMPI_REMOVED_STATIC_ASSERT_MSG(func, newfunc) |
| 331 | +#endif |
| 332 | + |
| 333 | +#if !defined(OMPI_REMOVED_USE_STATIC_ASSERT) |
| 334 | +# define OMPI_REMOVED_USE_STATIC_ASSERT 0 |
302 | 335 | #endif
|
303 | 336 |
|
304 | 337 | #if !defined(OMPI_OMIT_MPI1_COMPAT_DECLS)
|
@@ -1017,9 +1050,9 @@ OMPI_DECLSPEC extern MPI_Fint *MPI_F_STATUSES_IGNORE;
|
1017 | 1050 | #define MPI_LB OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_lb)
|
1018 | 1051 |
|
1019 | 1052 | OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_lb
|
1020 |
| - __mpi_interface_removed__("MPI_LB was removed in MPI-3.0; use MPI_Type_create_resized instead."); |
| 1053 | + OMPI_REMOVED_STATIC_ASSERT_MSG(MPI_LB, MPI_Type_create_resized); |
1021 | 1054 | OMPI_DECLSPEC extern struct ompi_predefined_datatype_t ompi_mpi_ub
|
1022 |
| - __mpi_interface_removed__("MPI_UB was removed in MPI-3.0; use MPI_Type_create_resized instead."); |
| 1055 | + OMPI_REMOVED_STATIC_ASSERT_MSG(MPI_UB, MPI_Type_create_resized); |
1023 | 1056 | #endif /* !OMPI_OMIT_MPI1_COMPAT_DECLS */
|
1024 | 1057 |
|
1025 | 1058 | /*
|
@@ -2696,61 +2729,74 @@ typedef void (MPI_Handler_function)(MPI_Comm *, int *, ...);
|
2696 | 2729 | * and should no longer be used in MPI applications.
|
2697 | 2730 | */
|
2698 | 2731 | OMPI_DECLSPEC int MPI_Address(void *location, MPI_Aint *address)
|
2699 |
| - __mpi_interface_removed__("MPI_Address was removed in MPI-3.0; use MPI_Get_address instead."); |
| 2732 | + __mpi_interface_removed__(MPI_Address, MPI_Get_address); |
2700 | 2733 | OMPI_DECLSPEC int PMPI_Address(void *location, MPI_Aint *address)
|
2701 |
| - __mpi_interface_removed__("PMPI_Address was removed in MPI-3.0; use MPI_Get_address instead."); |
| 2734 | + __mpi_interface_removed__(PMPI_Address, PMPI_Get_address); |
2702 | 2735 | OMPI_DECLSPEC int MPI_Errhandler_create(MPI_Handler_function *function,
|
2703 | 2736 | MPI_Errhandler *errhandler)
|
2704 |
| - __mpi_interface_removed__("MPI_Errhandler_create was removed in MPI-3.0; use MPI_Comm_create_errhandler instead."); |
| 2737 | + __mpi_interface_removed__(MPI_Errhandler_create, MPI_Comm_create_errhandler); |
2705 | 2738 | OMPI_DECLSPEC int PMPI_Errhandler_create(MPI_Handler_function *function,
|
2706 | 2739 | MPI_Errhandler *errhandler)
|
2707 |
| - __mpi_interface_removed__("PMPI_Errhandler_create was removed in MPI-3.0; use PMPI_Comm_create_errhandler instead."); |
| 2740 | + __mpi_interface_removed__(PMPI_Errhandler_create, PMPI_Comm_create_errhandler); |
2708 | 2741 | OMPI_DECLSPEC int MPI_Errhandler_get(MPI_Comm comm, MPI_Errhandler *errhandler)
|
2709 |
| - __mpi_interface_removed__("MPI_Errhandler_get was removed in MPI-3.0; use MPI_Comm_get_errhandler instead."); |
| 2742 | + __mpi_interface_removed__(MPI_Errhandler_get, MPI_Comm_get_errhandler); |
2710 | 2743 | OMPI_DECLSPEC int PMPI_Errhandler_get(MPI_Comm comm, MPI_Errhandler *errhandler)
|
2711 |
| - __mpi_interface_removed__("PMPI_Errhandler_get was removed in MPI-3.0; use PMPI_Comm_get_errhandler instead."); |
| 2744 | + __mpi_interface_removed__(PMPI_Errhandler_get, PMPI_Comm_get_errhandler); |
2712 | 2745 | OMPI_DECLSPEC int MPI_Errhandler_set(MPI_Comm comm, MPI_Errhandler errhandler)
|
2713 |
| - __mpi_interface_removed__("MPI_Errhandler_set was removed in MPI-3.0; use MPI_Comm_set_errhandler instead."); |
| 2746 | + __mpi_interface_removed__(MPI_Errhandler_set, MPI_Comm_set_errhandler); |
2714 | 2747 | OMPI_DECLSPEC int PMPI_Errhandler_set(MPI_Comm comm, MPI_Errhandler errhandler)
|
2715 |
| - __mpi_interface_removed__("PMPI_Errhandler_set was removed in MPI-3.0; use PMPI_Comm_set_errhandler instead."); |
| 2748 | + __mpi_interface_removed__(PMPI_Errhandler_set, PMPI_Comm_set_errhandler); |
2716 | 2749 | OMPI_DECLSPEC int MPI_Type_extent(MPI_Datatype type, MPI_Aint *extent)
|
2717 |
| - __mpi_interface_removed__("MPI_Type_extent was removed in MPI-3.0; use MPI_Type_get_extent instead."); |
| 2750 | + __mpi_interface_removed__(MPI_Type_extent, MPI_Type_get_extent); |
2718 | 2751 | OMPI_DECLSPEC int PMPI_Type_extent(MPI_Datatype type, MPI_Aint *extent)
|
2719 |
| - __mpi_interface_removed__("PMPI_Type_extent was removed in MPI-3.0; use PMPI_Type_get_extent instead."); |
| 2752 | + __mpi_interface_removed__(PMPI_Type_extent, PMPI_Type_get_extent); |
2720 | 2753 | OMPI_DECLSPEC int MPI_Type_hindexed(int count, int array_of_blocklengths[],
|
2721 | 2754 | MPI_Aint array_of_displacements[],
|
2722 | 2755 | MPI_Datatype oldtype, MPI_Datatype *newtype)
|
2723 |
| - __mpi_interface_removed__("MPI_Type_hindexed was removed in MPI-3.0; use MPI_Type_create_hindexed instead."); |
| 2756 | + __mpi_interface_removed__(MPI_Type_hindexed, MPI_Type_create_hindexed); |
2724 | 2757 | OMPI_DECLSPEC int PMPI_Type_hindexed(int count, int array_of_blocklengths[],
|
2725 | 2758 | MPI_Aint array_of_displacements[],
|
2726 | 2759 | MPI_Datatype oldtype, MPI_Datatype *newtype)
|
2727 |
| - __mpi_interface_removed__("PMPI_Type_hindexed was removed in MPI-3.0; use PMPI_Type_create_hindexed instead."); |
| 2760 | + __mpi_interface_removed__(PMPI_Type_hindexed, PMPI_Type_create_hindexed); |
2728 | 2761 | OMPI_DECLSPEC int MPI_Type_hvector(int count, int blocklength, MPI_Aint stride,
|
2729 | 2762 | MPI_Datatype oldtype, MPI_Datatype *newtype)
|
2730 |
| - __mpi_interface_removed__("MPI_Type_hvector was removed in MPI-3.0; use MPI_Type_create_hvector instead."); |
| 2763 | + __mpi_interface_removed__(MPI_Type_hvector, MPI_Type_create_hvector); |
2731 | 2764 | OMPI_DECLSPEC int PMPI_Type_hvector(int count, int blocklength, MPI_Aint stride,
|
2732 | 2765 | MPI_Datatype oldtype, MPI_Datatype *newtype)
|
2733 |
| - __mpi_interface_removed__("PMPI_Type_hvector was removed in MPI-3.0; use PMPI_Type_create_hvector instead."); |
| 2766 | + __mpi_interface_removed__(PMPI_Type_hvector, PMPI_Type_create_hvector); |
2734 | 2767 | OMPI_DECLSPEC int MPI_Type_lb(MPI_Datatype type, MPI_Aint *lb)
|
2735 |
| - __mpi_interface_removed__("MPI_Type_lb has been removed in MPI-3.0; use MPI_Type_get_extent instead."); |
| 2768 | + __mpi_interface_removed__(MPI_Type_lb, MPI_Type_get_extent); |
2736 | 2769 | OMPI_DECLSPEC int PMPI_Type_lb(MPI_Datatype type, MPI_Aint *lb)
|
2737 |
| - __mpi_interface_removed__("PMPI_Type_lb has been removed in MPI-3.0; use PMPI_Type_get_extent instead."); |
| 2770 | + __mpi_interface_removed__(PMPI_Type_lb, PMPI_Type_get_extent); |
2738 | 2771 | OMPI_DECLSPEC int MPI_Type_struct(int count, int array_of_blocklengths[],
|
2739 | 2772 | MPI_Aint array_of_displacements[],
|
2740 | 2773 | MPI_Datatype array_of_types[],
|
2741 | 2774 | MPI_Datatype *newtype)
|
2742 |
| - __mpi_interface_removed__("MPI_Type_struct was removed in MPI-3.0; use MPI_Type_create_struct instead."); |
| 2775 | + __mpi_interface_removed__(MPI_Type_struct, MPI_Type_create_struct); |
2743 | 2776 | OMPI_DECLSPEC int PMPI_Type_struct(int count, int array_of_blocklengths[],
|
2744 | 2777 | MPI_Aint array_of_displacements[],
|
2745 | 2778 | MPI_Datatype array_of_types[],
|
2746 | 2779 | MPI_Datatype *newtype)
|
2747 |
| - __mpi_interface_removed__("PMPI_Type_struct was removed in MPI-3.0; use PMPI_Type_create_struct instead."); |
| 2780 | + __mpi_interface_removed__(PMPI_Type_struct, PMPI_Type_create_struct); |
2748 | 2781 | OMPI_DECLSPEC int MPI_Type_ub(MPI_Datatype mtype, MPI_Aint *ub)
|
2749 |
| - __mpi_interface_removed__("MPI_Type_ub has been removed in MPI-3.0; use MPI_Type_get_extent instead."); |
| 2782 | + __mpi_interface_removed__(MPI_Type_ub, MPI_Type_get_extent); |
2750 | 2783 | OMPI_DECLSPEC int PMPI_Type_ub(MPI_Datatype mtype, MPI_Aint *ub)
|
2751 |
| - __mpi_interface_removed__("PMPI_Type_ub has been removed in MPI-3.0; use PMPI_Type_get_extent instead."); |
| 2784 | + __mpi_interface_removed__(PMPI_Type_ub, PMPI_Type_get_extent); |
2752 | 2785 | #endif /* !OMPI_OMIT_MPI1_COMPAT_DECLS */
|
2753 | 2786 |
|
| 2787 | +#if OMPI_REMOVED_USE_STATIC_ASSERT |
| 2788 | +#define MPI_Address(...) OMPI_REMOVED_STATIC_ASSERT_MSG(MPI_Address, MPI_Get_address) |
| 2789 | +#define MPI_Errhandler_create OMPI_REMOVED_STATIC_ASSERT_MSG(MPI_Errhandler_create, MPI_Comm_create_errhandler) |
| 2790 | +#define MPI_Errhandler_get(...) OMPI_REMOVED_STATIC_ASSERT_MSG(MPI_Errhandler_get, MPI_Comm_get_errhandler) |
| 2791 | +#define MPI_Errhandler_set(...) OMPI_REMOVED_STATIC_ASSERT_MSG(MPI_Errhandler_set, MPI_Comm_set_errhandler) |
| 2792 | +#define MPI_Type_extent(...) OMPI_REMOVED_STATIC_ASSERT_MSG(MPI_Type_extent, MPI_Type_get_extent) |
| 2793 | +#define MPI_Type_hindexed(...) OMPI_REMOVED_STATIC_ASSERT_MSG(MPI_Type_hindexed, MPI_Type_create_hindexed) |
| 2794 | +#define MPI_Type_hvector(...) OMPI_REMOVED_STATIC_ASSERT_MSG(MPI_Type_hvector, MPI_Type_create_hvector) |
| 2795 | +#define MPI_Type_lb(...) OMPI_REMOVED_STATIC_ASSERT_MSG(MPI_Type_lb, MPI_Type_get_extent) |
| 2796 | +#define MPI_Type_struct OMPI_REMOVED_STATIC_ASSERT_MSG(MPI_Type_struct, MPI_Type_create_struct) |
| 2797 | +#define MPI_Type_ub(...) OMPI_REMOVED_STATIC_ASSERT_MSG(MPI_Type_ub, MPI_Type_get_extent) |
| 2798 | +#endif |
| 2799 | + |
2754 | 2800 | #if defined(c_plusplus) || defined(__cplusplus)
|
2755 | 2801 | }
|
2756 | 2802 | #endif
|
|
0 commit comments