Added boxes_overlap test, modified bounds inference to set Box::used to true when accessed.
Provides only lower atomically if bounds inference indicates it is necessary.
Added Box::used_defined() helper function.
Provides are only flattened non-atomically if the provide is to a realization.
Merge branch 'master' into flattened-provide
Add Func::infer_arguments()
Omit buffers that aren't params.
Merge branch 'master' into flattened-provide
Merge branch 'flattened-provide' of https://github.com/halide/Halide into flattened-provide
Modified boxes_overlap to understand scalar boxes are OK and not overlapping non-scalar boxes.
Fixed totally broken condition in boxes_overlap.
Added in-place argmax test to test atomic vs. non-atomic provides.
Renamed used_defined -> maybe_used.
Added more tests of edge cases for atomicity of provides.
Renamed maybe_used to maybe_unused.
Merge pull request #414 from halide/flattened-provide

Flattened provide
Partial attempt at improved aliasing information for LLVM.
Merge branch 'master' into better-aliasing-info
Cleaned up TBAA for constant indices.
Removed trick to keep FFT input/output buffers cached.