Index: src/opari/opari2_parser_f.cc =================================================================== --- src/opari/opari2_parser_f.cc (revision 1749) +++ src/opari/opari2_parser_f.cc (working copy) @@ -763,11 +763,13 @@ lines.push_back( m_lowline ); bool found_continuation_line; - string prev_sentinel = m_sentinel; - unsigned ignored_lines = 0; + bool last_was_continuation_line = false; + string prev_sentinel = m_sentinel; + unsigned ignored_lines = 0; do { - found_continuation_line = false; + last_was_continuation_line = found_continuation_line; + found_continuation_line = false; if ( m_options.form == F_FREE ) { @@ -778,7 +780,7 @@ --com; } string::size_type amp = m_lowline.find_last_not_of( " \t", com ); - if ( m_lowline[ amp ] == '&' ) + if ( m_lowline[ amp ] == '&' || ( is_empty_line() && last_was_continuation_line ) ) { found_continuation_line = true; } @@ -822,8 +824,15 @@ found_continuation_line = true; m_sentinel = prev_sentinel; } - else if ( found_continuation_line && !is_empty_line() ) + else if ( is_empty_line() && last_was_continuation_line && m_options.form == F_FREE ) { + found_continuation_line = true; + lines.push_back( m_lowline ); + m_sentinel = prev_sentinel; + ignored_lines--; + } + else if ( found_continuation_line ) + { cerr << m_curr_file << ":" << m_lineno - 1 << ": ERROR: missing continuation line\n"; cleanup_and_exit(); @@ -840,7 +849,6 @@ OPARI2_Directive* d_new = NewDirective( lines, directive_prefix, m_options.lang, m_curr_file, m_lineno - lines.size() - ignored_lines + 1 ); - if ( d_new ) { m_waitfor_loopstart = d_new->NeedsEndLoopDirective();