[MLIR][LLVMIR] Fix llvm.extractvalue folder (#201838)
Fix the llvm.extractvalue folder when trying to extract a value from a
multidimensional constant. Add lit tests that would crash without the
fix.
[reviews] Deduplicate DebugTypeFunction by operand ids
Add getOrEmitDebugTypeFunction() to reuse identical DebugTypeFunction
instructions when distinct DISubroutineType nodes lower to the same
operands (e.g. !{} vs !{null} void prototypes). Update the lit test to
assert a single emission.
[SPIRV] Extend NSDI debug handling for DebugTypeFunction.
Changes:
- Collect required types with DebugInfoFinder instead of walking DbgVariableRecords only. This allows processing types that might not be available in these records, and avoids code duplication for the traversals.
- Emit DebugTypeFunction for DISubroutineType when every signature slot maps to an
emitted debug type.
- Reset per-module state in beginModule().
- Replace parallel FileStringRegs/BasicTypeNameRegs with a StringMap OpString
cache, deduplicating identical strings.
- Add LLVM DINode flag lowering for NSDI.
- Cache DebugInfoNone, OpTypeVoid and OpTypeInt32 registers to avoid duplicate instructions.