workaround for VS2010/VS2012 codegen bug
code styling
Improve const-folding error msg for static variables

The error message for an attempt to read a runtime variable
from optimize(WANTinterpret) is less informative than the CTFE one.
Improve the optimize() version, so that the test suite is ready for
the change to using CTFE throughout.
CTFE: Improve error message for static assert

by running optimize(0) first.
Currently static assert uses optimize(WANTinterpret) for const folding. This has
the side-effect of simplifying the expression before evaluating it, which makes
error messages nicer. If we simply change to using CTFE instead, the error
messages won't get simplified. So insert a call to optimize(0) before running CTFE.
Fix bug 10251 CTFE: Allow returning pointers to global statics of known value

Don't expand pointers to global variables.
They should stay as a SymOffExp, even if their value is known.
Fix bug 10252 CTFE: Generate error for shr/ushr/shl out of range

Use same behaviour as for const-folding.
CTFE: Allow creation (but not reading) of unions

It's currently possible to create unions in global scope but not in CTFE.
We can't support reading or writing members, but creation is OK.
CTFE: Allow VectorExp as a no-op
CTFE compile: Count total variable declarations

First step towards CTFE compilation. Walk over all
expressions in the function, searching for VarDeclarations and
checking the validity of the AST.
CTFE sanity check: verify no ErrorExps in AST

Before starting CTFE, we confirm that the AST is valid.
Fix issue 10270
Merge pull request #2132 from andralex/make-dash-jay

Fix issue 10270
Merge pull request #2119 from rainers/vs_codegen_bug

workaround for VS2010/VS2012 codegen bug
Merge pull request #2117 from donc/ctfe_harmonize_errormsg

Make CTFE error messages same as for const-folding
Merge pull request #2126 from donc/ctfe_10251pointerglobal

10251 CTFE returning pointers to global statics of known value
Merge pull request #2127 from donc/ctfe_shiftrange

10252 CTFE: Generate error for shr/ushr/shl out of range
Merge pull request #2128 from donc/ctfe_unionvector

CTFE: Allow creation (but not reading) of unions and __vectors
Merge pull request #2129 from donc/ctfe_JIT_step1

CTFE JIT compilation, step 1: walk AST, check integrity
CTFE: Typo in typecheck for casts of AddrExp pointers

Was checking the pointer type instead of the pointee type.
Exposed by Test75 in interpret3.d in test suite, when using CTFE to do
const folding.
CTFE: &global -> SymOffExp

optimize() changes AddrExp(globalvar) into a SymOffExp.
But optimize() isn't always called before CTFE, so do it here too.