Re: [petsc-dev] Problem with the reorganization of complex with clang
I checked and found PetscComplex was correctly defined to std::complex, and clang-6.0 was also fine to use GNU C++ library. The problem was the gcc-4.8.5 C++ library clang picked up was a bit old, which conformed to C++11. However clang-6.0's default uses C++14, which changed the rules of *constexpr.* Workarounds include: - define PETSC_SKIP_CXX_COMPLEX_FIX in the offending *.cxx file. - add CXXOPTFLAGS=-std=c++11 - update clang-6.o or gcc-4.8.5 (of 2015) on that machine. --Junchao Zhang On Fri, May 14, 2021 at 10:42 AM Satish Balay <[email protected]> wrote:
You can login to: isdp001.cels.anl.gov - using your MCS account credentials [and then setup ~/.ssh/authorized_keys]
Satish
On Fri, 14 May 2021, Junchao Zhang wrote:
Satish, how to access this machine? I want to know why complex is screwed up.
--Junchao Zhang
On Thu, May 13, 2021 at 7:08 PM Matthew Knepley <[email protected]> wrote:
Nope. I will use your fix.
Thanks,
Matt
On Thu, May 13, 2021 at 7:55 PM Matthew Knepley <[email protected]> wrote:
I am going to try just including petscsys.h and see if it works.
Thanks,
Matt
On Thu, May 13, 2021 at 6:23 PM Satish Balay <[email protected]> wrote:
This gets the build going...
diff --git a/src/sys/dll/cxx/demangle.cxx b/src/sys/dll/cxx/demangle.cxx index 31810ea15f..793a97d285 100644 --- a/src/sys/dll/cxx/demangle.cxx +++ b/src/sys/dll/cxx/demangle.cxx @@ -1,3 +1,4 @@ +#define PETSC_SKIP_COMPLEX #include <petsc/private/petscimpl.h>
#ifdef PETSC_HAVE_CXXABI_H
Satish
On Thu, 13 May 2021, Satish Balay wrote:
CXX arch-ci-linux-clang-avx/obj/sys/dll/cxx/demangle.o
It is built with a c++ compiler - so __cplusplus should be defined. [PETSC_HAVE_CXXABI is not defined]
Do you need to build this sourcefile file in a clanguage=C build?
I'm not sure if a c++/complex build is checked with this compiler.
[eventhough its clang build - I see the compiler is using system incldues aka from gcc-4.8.5 - so perhaps some things don't work?]
One option is to add the following to this sourcefile:
#define PETSC_SKIP_COMPLEX
Satish
On Thu, 13 May 2021, Matthew Knepley wrote:
In this CI run (linux-clang-avg):
https://gitlab.com/petsc/petsc/-/jobs/1260342204
The compile fails building a C++ file, demangle.cxx. It fails at the first line, including <petsc/private/petscimpl.h>, down in petscsystypes.h. It bombs during the definition of complex because it looks like the compiler is not defining __cplusplus, and thus takes the wrong branch. Is this what is happening? I cannot access this machine.
Thanks,
Matt
-- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener
https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
-- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener
https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
participants (1)
-
Junchao Zhang