Fix behaviour of fork/join_none with only one statement (issue #672).
The compiler normally optimises away the enclosing block statement
if a block only contains one statement. But this is not valid for
a fork/join_none block.
(cherry picked from commit 313f376394)
This commit is contained in:
parent
f8e29ee5e1
commit
0ad16a6c0b
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2000-2017 Stephen Williams (steve@icarus.com)
|
* Copyright (c) 2000-2022 Stephen Williams (steve@icarus.com)
|
||||||
*
|
*
|
||||||
* This source code is free software; you can redistribute it
|
* This source code is free software; you can redistribute it
|
||||||
* and/or modify it in source code form under the terms of the GNU
|
* and/or modify it in source code form under the terms of the GNU
|
||||||
|
|
@ -421,9 +421,11 @@ bool dll_target::proc_block(const NetBlock*net)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If there is exactly one statement, there is no need for the
|
/* If there is exactly one statement and the block is not a
|
||||||
block wrapper, generate the contained statement instead. */
|
fork/join_none, there is no need for the block wrapper,
|
||||||
if ((count == 1) && (net->subscope() == 0)) {
|
generate the contained statement instead. */
|
||||||
|
if ((count == 1) && (net->subscope() == 0) &&
|
||||||
|
(net->type() != NetBlock::PARA_JOIN_NONE)) {
|
||||||
return net->proc_first()->emit_proc(this);
|
return net->proc_first()->emit_proc(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue