[petsc-dev] COPTFLAGS
Jed Brown
jedbrown at mcs.anl.gov
Tue Nov 12 23:37:09 CST 2013
Passing COPTFLAGS currently causes your flags to be passed _prior_ to
the flags that get added in compilerOptions.py. This makes ./configure
COPTFLAGS='-Og -g' useless since -O0 gets passed afterward, for example.
https://bitbucket.org/petsc/petsc/commits/e3218094707942d5674f57c17eb63a9af846a945
> commit e3218094707942d5674f57c17eb63a9af846a945
> Author: Barry Smith <bsmith at mcs.anl.gov>
> Date: Sat Mar 17 22:47:44 2012 -0500
>
> added -fno-inline for better debugging with gnu compilers; take it out if it breaks something
>
> Hg-commit: cee000f4e8f56981f3611284aa810e3c0419aa10
>
> Modified config/compilerOptions.py
> diff --git a/config/compilerOptions.py b/config/compilerOptions.py
> index e619c8e..612cb3f 100644
> --- a/config/compilerOptions.py
> +++ b/config/compilerOptions.py
> @@ -22,6 +22,8 @@ class CompilerOptions(config.base.Configure):
> if self.framework.argDB['with-gcov']:
> flags.extend(['-fprofile-arcs', '-ftest-coverage'])
> flags.append('-g3')
> + flags.append('-fno-inline')
-fno-inline
Do not expand any functions inline apart from those marked with the
"always_inline" attribute. This is the default when not optimizing.
I.e., this option should have no effect.
> + flags.append('-O0')
This is the default and overrides COPTFLAGS since it comes later.
I would guess this was added to compensate for MPICH putting its CFLAGS
into the compiler wrappers (you need MPICHLIB_CFLAGS to avoid it), so
that "mpicc somefile.c" often defaults to high optimization. That
behavior is bad and I agree that we need to work around it somehow, but
the fix in this patch was not applied to getCxxFlags or getFortranFlags.
The way I see, it, we can exit early when the user specifies COPTFLAGS
diff --git i/config/BuildSystem/config/compilerOptions.py w/config/BuildSystem/config/compilerOptions.py
index dadc5fb..2a3cfa0 100644
--- i/config/BuildSystem/config/compilerOptions.py
+++ w/config/BuildSystem/config/compilerOptions.py
@@ -14,6 +14,9 @@ class CompilerOptions(config.base.Configure):
except:
pass
+ if bopt and 'COPTFLAGS' in self.framework.argDB:
+ return []
+
flags = []
# GNU gcc
if config.setCompilers.Configure.isGNU(compiler) or config.setCompilers.Configure.isClang(compiler):
and we can add -O0 to the other languages
@@ -96,6 +101,7 @@ class CompilerOptions(config.base.Configure):
flags.extend(['-fprofile-arcs', '-ftest-coverage'])
# -g3 causes an as SEGV on OSX
flags.append('-g')
+ flags.append('-O0') # MPICH puts CXXFLAGS into wrappers, so ensure that we do not use optimization
elif bopt in ['O']:
if os.environ.has_key('USER'):
flags.append('-O')
(similar for Fortran). But this is also imperfect because some people
use non-Gnu compilers.
Is there a clean solution?
> elif bopt == 'O':
> flags.append('-O')
> else:
> Modified config/packages/MPI.py
> diff --git a/config/packages/MPI.py b/config/packages/MPI.py
> index 260acab..2328eb9 100644
> --- a/config/packages/MPI.py
> +++ b/config/packages/MPI.py
> @@ -11,7 +11,7 @@ from stat import *
> class Configure(config.package.Package):
> def __init__(self, framework):
> config.package.Package.__init__(self, framework)
> - self.download_openmpi = ['http://www.open-mpi.org/software/ompi/v1.5/downloads/openmpi-1.5.4.tar.gz']
> + self.download_openmpi = ['http://www.open-mpi.org/software/ompi/v1.4/downloads/openmpi-1.4.4.tar.gz']
> self.download_mpich = ['http://www.mcs.anl.gov/research/projects/mpich2/downloads/tarballs/1.4.1p1/mpich2-1.4.1p1.tar.gz']
> self.download = ['redefine']
> self.functions = ['MPI_Init', 'MPI_Comm_create']
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 835 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20131112/1b7a6dfe/attachment.sig>
More information about the petsc-dev
mailing list