More liveness improvements (#2272)
More liveness improvements (#2272)

* #include an absolute path didn't work - because paths were taken to always be relative.

* Use TerminatedUnownedStringSlice for literals in output C++.

* Remove Escape/Unescape functions used in slang-token-reader.cpp
Add target type of 'host-cpp' etc to map to the target types.

* Fix some corner cases around string encoding.

* Added unit test for string escaping.
Fixed some assorted escaping bugs.

* Updated test output.

* Added decode test.

* Stop using hex output, to get around 'greedy' aspect. Use octal instead.

* Added HostHostCallable
Small changes to use ArtifactDesc/Info instead of large switches.

* Fix C++ emit to handle arbitrary function export.

* Add options handling for callable without an output being specified.

* Can compile with COM interface. Added example using com interface.

* Use the IR Ptr type instead of hack in C++ emit for interfaces.

* Fix issue with outputting the COM call when ptr is used.

* Fix crash issue on compilation failure.

* Add support for __global.

* Added `ActualGlobalRate`
Added special handling around globals and COM interfaces.
Tested out in cpu-com-example.

* Fix typo in NodeBase.

* Support for accessing globals by name working.

* Bounds checking for C++
Improved bounds checks for CUDA.

* Check that actual global initialization is working.

* Fix typo.

* Refactor the com replacement such that it doesn't need a cache or do anything special with GlobalVar.

* Fix typo in CUDA prelude.

* Remove context.
Only create replacement if needed.

* Split out COM host-callable into a unit-test.

* host-callable com testing on C++and llvm.

* Comment around the COM ptr replacement.

* WIP Zero bound test.

* Disable com test on vs 32 bit.
Fix C++ prelude

* Disable 32 bit targets testing com host-callable.

* For now disable zero index test.

* Enable bounds checking for CPU/CUDA.

* Small fixes.
Disable CUDA zero index bound fix.

* Add test result for bound check.

* Work around for index wrapping issue.

* Added Fixed array test.

* Only enable prelude asserts via SLANG_PRELUDE_ENABLE_ASSERT (unless defined by the user)

* Small fix around instCount.

* Improve liveness loop handing and tests.

* Improve liveness comment.

* More conservative loop handling.

* Make liveness deterministic to make testing work.

* Added 'span tidy'
Added some more tests.

* Simplify span simplification, because could collapse inappropriate spans.

* Updated liveness with simple loop tracking.

* Update test results.

* Small tidy up.

* Update comments in liveness tests.

* Improve liveness comments.

* Loop handling without needing LoopInfo tracking.

* Improve liveness comments.

* Small fix around removing uninteresting spans.
Improve naming.

* Store current loop information in Loop structure on the stack.

* Add processing to statically determine which loop a block belongs to.

* Small improvement around leaving a loop.

* Fix release build warning.

* Small improvement to const correctness around Loop.

* Add stores to liveness run information, to allow for more sophisticated loop analysis.
csyonghe/slang,csyonghe/slang,shader-slang/slang,csyonghe/slang,shader-slang/slang,shader-slang/slang