microsoft / microsoft/DirectXShaderCompiler
Internal llvm::cast<X> due to particular combination of class fields and methods
Open
Nobody has claimed this yet.
bug
crash
- Dominant language
- C++
- Stars
- 3.7k
- Forks
- 900
- Avg merge
- 2d 11h
- Merged PRs (30d)
- 44
Description
(reduced to minimum crashing example) code:
struct PSInput
{
};
class SurfaceData_BasePBR
{
float3 albedo;
};
interface ISpecRough
{
void ApplySpecularAA();
};
class SurfaceData_NewPBR : SurfaceData_BasePBR, ISpecRough
{
float3 emissiveLighting;
void ApplySpecularAA()
{
}
};
float4 PSMain( PSInput input ) : SV_TARGET
{
SurfaceData_NewPBR obj ;
obj . albedo . x = 1 ;
return float4 ( obj . albedo , 1 ) ;
}
Example command line:
-T ps_6_5 -E PSMain -HV 2021
Effect:
Internal Compiler error: llvm::cast() argument of incompatible type!
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by compiling the reduced HLSL example with the command line -T ps_6_5 -E PSMain -HV 2021 and confirm the internal llvm::cast() failure. Trace the compiler path for the combination of inherited class fields, an interface method, and the albedo member access; done means the example no longer produces the internal compiler error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100