Don't copy arguments passed by value with indirection to allocas.
Added a volatile module that uses the LLVM volatile intrinsics.

Signed-off-by: Daniel Fagnan <dnfagnan@gmail.com>

added volatile as a module.

Signed-off-by: Daniel Fagnan <dnfagnan@gmail.com>

fixed the year in the file header

Signed-off-by: Daniel Fagnan <dnfagnan@gmail.com>

removed almost all transmutes. Refactored to safe interfaces. Fixed up tests.

Signed-off-by: Daniel Fagnan <dnfagnan@gmail.com>

fixed the issues per the review comments. All tests pass. VolatilePtr is now working with pointers, not values. Introduced a safe interface.

Signed-off-by: Daniel Fagnan <dnfagnan@gmail.com>

fixed leakage of data. Fixed styling. Added more comments describing the semantics of the module and  method.

Signed-off-by: Daniel Fagnan <dnfagnan@gmail.com>

changed .take to .load within some tests.

Signed-off-by: Daniel Fagnan <dnfagnan@gmail.com>