... and use these classes to port the ScopInfo.h interface to C++. This allows
us to return C++ objects everywhere in the interface, without having to convert
all C users at a time. As a result, new code can use C++ without the need for
std::give (or the new std::manage) calls all over the place, while old code
still works.
The isl++ interface on purpose does not allow for conversions back to isl C
types as there is a risk that automatic conversions might cause difficult to
detect memory leaks. The isl_conv:: classes allow such conversions, but are
expected to only be used at interface boundaries to avoid the need of isl++
conversion functions all over the place. After we moved to the C++ interface,
this conversion layer is expected to be removed again.
To make this patch compile, we have to remove some "auto" declarations and
replace them with specific types. This is a good direction anyhow, as LLVM's
coding style suggests to not use auto besides in obvious situations.
[Style] UPPER_CASE is usually reserved for macros. Template arguments in LLVM usually are CamelCase.