Bugfix: add per-lane offsets when accessing varying data through a pointer!
Add support for "new" and "delete" to the language.

Issue #139.
Handle undef values in LLVMVectorValuesAllEqual()
Fixes to c++ backend for new and delete

Don't include declarations of malloc/free in the generated code (get
the standard ones from system headers instead).

Add a cast to (uint8_t *) before calls to malloc, which C++ requires,
since proper malloc returns a void *.
Improve implementations of unsigned <=, >= in sse4 intrinsics file.
Fix silly error in generic-16.h example C++ bindings.
Add support for 1-wide scalar target.

Issue #40.
Don't lose source position when returning values of constant symbols.
Detect division by 0 during constant folding and issue a sensible error.
Fix RNG seed code in stdlib for scalar target.
Scalar target builtins bugfixes.

Typo in __max_varying_double.
Add declarations for half functions.
Use the gen_scatter macro to get the scatter functions.
Windows build support for scalar target.
Update run_tests and examples makefile for scalar target.

Fixed a number of tests that didn't handle the programCount == 1
case correctly.
Short-circuit evaluation of && and || operators.

We now follow C's approach of evaluating these: we don't evaluate
the second expression in the operator if the value of the first one
determines the overall result.  Thus, these can now be used 
idiomatically like (index < limit && array[index] > 0) and such.

For varying expressions, the mask is set appropriately when evaluating
the second expression.

(For expressions that can be determined to be both simple and safe to
evaluate with the mask all off, we still evaluate both sides and compute
the logical op result directly, which saves a number of branches and tests.
However, the effect of this should never be visible to the programmer.)

Issue #4.
Fix examples/tasksys.cpp to compile with 32-bit targets.

(Change a cmpxchgd to cmpxchl.)  Note that a number of the examples
still don't work with 32-bit compilation, why still TBD.
Scalar target fixes.

Don't issue warnings about all instances writing to the same location if
there is only one program instance in the gang.

Be sure to report that all values are equal in one-element vectors in
LLVMVectorValuesAllEqual().

Issue #166.
Implement NullPointerExpr::GetConstant()

Also reworked TypeCastExpr::GetConstant() to just forward the request along
and moved the code that was previously there to handle uniform->varying
smears of function pointers to FunctionSymbolExpr::GetConstant().

Fixes issue #168.
Missed pass that should be skipped when pseudo memory ops are supposed to be left unchanged.
Fix bug in handling scatters where all instances go to the same location.

Previously, we'd pick one lane and generate a regular store for its value.
This was the wrong thing to do, since we also should have been checking
that the mask was on (for the lane that was chosen).  This bug didn't
become evident until the scalar target was added, since many stores fall
into this case with that target.

Now, we just leave those as regular scatters.

Fixes most of the failing tests for the scalar target listed in issue #167.
Fix various places in deferred shading example that assumed programCount >= 4.

This gets deferred closer to working with the scalar target, but there are still
some issues.  (Partially in gamma correction / final clamping, it seems.)

This fix causes a ~0.5% performance degradation with e.g. the AVX target, 
though it's not clear that it's worth having a separate code path in order to
not lose this small amount of perf.

(Partially addresses issue #167)