[Bf-committers] [PATCH] Fix for GCC9 new OpenMP data sharing

Brecht Van Lommel brechtvanlommel at gmail.com
Sun Apr 7 11:24:52 CEST 2019


Committed, thanks!

Regards,
Brecht.

On Wed, Apr 3, 2019 at 2:48 AM Robert-André Mauchin <zebob.m at gmail.com>
wrote:

> Hello,
>
> We (Fedora) have blender 2.79b failing to build from source with GCC 9 in
> Fedora 30 and Rawhide.
>
> See log:
> https://kojipkgs.fedoraproject.org/work/tasks/9457/33889457/build.log
>
> After investigation, this is caused by a change in GCC 9 as noted in the
> "Porting to GCC 9" page:
>
> >OpenMP data sharing
>
> >GCC releases before 9 were implementing an OpenMP 3.1 data sharing rule
> that
> >const qualified variables without mutable member are predetermined
> shared,
> >but as an exception may be specified in the firstprivate clause. OpenMP
> 4.0
> >dropped this rule, but in the hope that the incompatible change will be
> >reverted GCC kept implementing the previous behavior. Now that for OpenMP
> 5.0
> >it has been confirmed this is not going to change, GCC 9 started
> implementing
> >the OpenMP 4.0 and later behavior. When not using default clause or when
> >using default(shared), this makes no difference, but if using
> default(none),
> >previously the choice was not specify the const qualified variables on
> the
> >construct at all, or specify in firstprivate clause. In GCC 9 as well as
> for
> >OpenMP 4.0 compliance, those variables need to be specified on constructs
> in
> >which they are used, either in shared or in firstprivate clause.
> Specifying
> >them in firstprivate clause is one way to achieve compatibility with both
> >older GCC versions and GCC 9, another option is to drop the default(none)
> >clause. In C++, const variables with constant initializers which are not
> odr-
> >used in the region, but replaced with their constant initializer are not
> >considered to be referenced in the region for default(none) purposes.
>
> https://gcc.gnu.org/gcc-9/porting_to.html#ompdatasharing
>
> This patch solves the build failure by dropping the default(none) clause
> in
> intern/elbeem/intern/solver_main.cpp.
>
> Here's a link to a successful build with this patch applied:
> https://koji.fedoraproject.org/koji/taskinfo?taskID=33898420
>
> Best regards,
>
> Robert-André
>
> ps: please don't ask me to register to https://developer.blender.org/ to
> upload this patch._______________________________________________
> Bf-committers mailing list
> Bf-committers at blender.org
> https://lists.blender.org/mailman/listinfo/bf-committers
>


More information about the Bf-committers mailing list