Adapt to latest llvm changes (#3859)
Some merged changes from llvm-project breaks compilation and tests of
translator.
[#187927](https://github.com/llvm/llvm-project/pull/187927):
- `DISubprogram::getRetainedNodes()` returns `MDNodeArray` now, instead
of `DINodeArray`.
- Originally, a global variable in function scope (a `DIGlobalVariable`
whose scope is a `DILocalScope`) was on the `globals:` list of the
`DICompileUnit`. This has changed now: it must be on `retainedNodes` of
the owning `DISubprogram`, otherwise LLVM IR verifier will reject it.
[#207347](https://github.com/llvm/llvm-project/pull/207347):
- Now `llc` requires `SPV_INTEL_function_pointers` to be enabled when
using function pointer in SPIRV BE.
---------
Co-authored-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
Co-authored-by: Yury Plyakhin <yury.plyakhin@intel.com>
Original commit:
https://github.com/KhronosGroup/SPIRV-LLVM-Translator/commit/db65012182dae78