------- Comment #3 from theodore dot papadopoulo at sophia dot inria dot fr 2007-04-23 17:01 ------- Sorry to have added you without asking Jakub, but it looks like you are one of the person that deals with OpenMP.... and this bug seems to have been unnoticed up to now...
It seems that this problem is related to the template instanciation mecanism (as far as I can tell). The trouble is that finish_omp_clauses ensures that the variable b is complete by calling require_complete_type but since we are in template instanciation mode, this function returns immediately without doing anything. Further in finish_omp_clauses (semantics.c:3655), assuming that the type is complete the code tries to build a call to a (copy?) constructor, build_call calls complete_type_or_else which calls complete_type which calls instantiate_class_template which returns immediately because TYPE_BEING_DEFINED is true.... so complete_type_or_else complains. Is there a way to defer the completeness check to after the type has been instantiated ?? -- theodore dot papadopoulo at sophia dot inria dot fr changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at redhat dot com Summary|g++ does not accept some |g++ does not accept some |OpenMP code |OpenMP code http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31598