Convert &&= and ||= to use scoped rather than scope-less BlockStmts to preserve logical abstraction
Enabling parallelism for lammps and lsms and filing a .future.
Merge pull request #794 from vasslitvinov/enable-parallelism-in-lammps-and-lsms-tests

Enabling parallelism for lammps and lsms and filing a .future.

These tests:
  test/studies/lammps/shemmy/s-lammps.chpl
  test/studies/lammps/shemmy/m-lammps.chpl
  test/studies/lsms/shemmy/s-lsms.chpl
  test/studies/lsms/shemmy/m-lsms.chpl

have been tested with --dataParTasksPerLocale=1
since they were added to the repository, I believe.

I tried removing that, and they all continue to succeed -
except for m-lsms.chpl, which crashes mysteriously.

So I remove --dataParTasksPerLocale=1 from all .execopts
and modify m-lsms.chpl so (a) it runs without --dataParTasksPerLocale=1
and (b) I can create a .future for the crash, m-lsms.par-forall.chpl.
The .future is a symlink to the original, and adds
--serialForall=false to .execopts.

From m-lsms.par-forall.future: the test crashes with:

m-lsms.par-forall.chpl:67: error: halt reached - array index out of bounds: (1)

where in a single multilocale run I have seen three errors with the erroneous
indices of 1, 6, and 9.

Briefly looking at the code, I did not even see any array indexing operations
there, and did not investigate further. Valgrind did not turn up anything,
and the program runs successfully under valgrind. It is unclear to me
whether it is an application code bug or a Chapel bug.

Serializing that particular forall, the code runs successfully.
So I am putting a 'serial serialForall do' around it where serialForall
defaults to 'true' and is 'false' for this .future.
Update based on gasnet.fifo runs; also updated comments at top of file
Merge pull request #795 from bradcray/triage-sep-blc

Update comments at top of REGRESSIONS file

(It seems that the last time I was working on them, I was
interrupted before I finished?)

Also incorporated this morning's gasnet.fifo returns.
Merge pull request #796 from noakesmichael/assignOp

Alter the "parsers" representation of &&= and ||= to fix a --baseline regression.

The "parser" represents the &&= and ||= compound assignment operators using a temporary variable
and a nested function that references that variable; the whole thing is wrapped in a scopeless BlockStmt.
Certain transformations can then occur which separate the "nested" function from the scope in which
the outer variable is defined.  This goes unnoticed in the few cases that we use these operators and
with sufficient optimizations.

Convert the outer BlockStmt to a scoped BlockStmt to ensure the scope is not broken.


Compiled: STD clang on Darwin, STD/LLVM gcc on linux

Tests: Fixes the --baseline regression for this operator (trivial/deitz/test_assignop.chpl) and passes paratest

Review: None