bool IsMainSubprogram) {
using namespace SPIRVDebug::Operand::Function;
const SPIRVWordVec &Ops = DebugInst->getArguments();
- assert(Ops.size() >= MinOperandCount && "Invalid number of operands");
+ assert(Ops.size() >= MinOperandCountNonSem && "Invalid number of operands");
+ if (!isNonSemanticDebugInfo(DebugInst->getExtSetKind()))
+ assert(Ops.size() >= MinOperandCount && "Invalid number of operands");
StringRef Name = getString(Ops[NameIdx]);
DISubroutineType *Ty =
bool IsLocal = SPIRVDebugFlags & SPIRVDebug::FlagIsLocal;
bool IsMainSubprogramFlag =
IsMainSubprogram ||
- BM->isEntryPoint(spv::ExecutionModelKernel, Ops[FunctionIdIdx]);
+ (!isNonSemanticDebugInfo(DebugInst->getExtSetKind()) &&
+ BM->isEntryPoint(spv::ExecutionModelKernel, Ops[FunctionIdIdx]));
DISubprogram::DISPFlags SPFlags = DISubprogram::toSPFlags(
IsLocal, IsDefinition, IsOptimized, DISubprogram::SPFlagNonvirtual,
else {
// Create targetFuncName mostly for Fortran trampoline function if it is
// the case
- StringRef TargetFunction;
- if (Ops.size() > MinOperandCount) {
+ StringRef TargetFunction = "";
+ if (DebugInst->getExtSetKind() ==
+ SPIRVEIS_NonSemantic_Shader_DebugInfo_200 &&
+ Ops.size() > TargetFunctionNameIdx) {
TargetFunction = getString(Ops[TargetFunctionNameIdx]);
}
DIS = getDIBuilder(DebugInst).createFunction(
namespace Function {
enum {
- NameIdx = 0,
- TypeIdx = 1,
- SourceIdx = 2,
- LineIdx = 3,
- ColumnIdx = 4,
- ParentIdx = 5,
- LinkageNameIdx = 6,
- FlagsIdx = 7,
- ScopeLineIdx = 8,
- FunctionIdIdx = 9,
- DeclarationNonSemIdx = 9,
- DeclarationIdx = 10,
+ NameIdx = 0,
+ TypeIdx = 1,
+ SourceIdx = 2,
+ LineIdx = 3,
+ ColumnIdx = 4,
+ ParentIdx = 5,
+ LinkageNameIdx = 6,
+ FlagsIdx = 7,
+ ScopeLineIdx = 8,
+ FunctionIdIdx = 9,
+ DeclarationIdx = 10,
+ MinOperandCount = 10,
+
+// Only for NonSemantic.Shader.DebugInfo.*
+// No operand FunctionId
+ DeclarationNonSemIdx = 9,
+ MinOperandCountNonSem = 9,
// Only for NonSemantic.Shader.DebugInfo.200
- TargetFunctionNameIdx = 10,
- MinOperandCount = 10
+ TargetFunctionNameIdx = 10,
};
}