------- Comment #80 from burnus at gcc dot gnu dot org 2007-03-14 15:15 ------- (In reply to comment #76) > "One issue with OpenMP is that it is very easy to break an OpenMP > code (it is just comments)," > This is a complaint I've heard before. I wonder if you have any suggestions > to make it more difficult to break OpenMP-annotated Fortran code.
I think the biggest problem is that OpenMP goes out of sync with the serial code. (Though MPI is much, much worser in this regard.) For MPI it is simply to forget to update the different code paths. For OpenMP, it is presumably the condiditional compilation part and forgetting to put critical sections/barriers. > One think I've been thinking about, is to make the parser always parse OpenMP > directives, and issue warnings if something doesn't look right but > -fopenmp is not given. Is that something that would help avoid the most > common cases of broken OpenMP directives? I think this will help (as it at least forces the lexical correctness of the OpenMP statements), but algorithmic problems (missing barriers/critical sections, conditional compilation parts) can unfortunately not be found this way ; using -fopenmp will find some more kind of problems (esp. in conditional parts), but will not find those algorithmic problems neither. (In reply to comment #77) > Currently GNU Fortran (GCC) 4.3.0 20070313 (experimental) > there seems to be a new gcc error on CP2K: > gfortran -c -O3 -ftree-loop-linear -ftree-vectorize -ffast-math -march=opteron > -msse2 fparser.f90 > /tmp/ccNk6D7G.s: Assembler messages: > /tmp/ccNk6D7G.s:820: Error: suffix or operands invalid for `sahf' Does not seem to happen (20070314 on x86-64 Linux) with current CVS version of CP2k. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29975