[all-commits] [llvm/llvm-project] 13a634: [DirectX] Fix the writing of ConstantExpr GEPs to ...

Deric C. via All-commits all-commits at lists.llvm.org
Tue Aug 26 10:02:21 PDT 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 13a634281fb080ab0641998eb336ee591631beff
      https://github.com/llvm/llvm-project/commit/13a634281fb080ab0641998eb336ee591631beff
  Author: Deric C. <cheung.deric at gmail.com>
  Date:   2025-08-26 (Tue, 26 Aug 2025)

  Changed paths:
    M llvm/lib/Target/DirectX/DXILDataScalarization.cpp
    M llvm/lib/Target/DirectX/DXILFinalizeLinkage.cpp
    M llvm/lib/Target/DirectX/DXILWriter/DXILBitcodeWriter.cpp
    M llvm/lib/Target/DirectX/DirectXIRPasses/PointerTypeAnalysis.cpp
    A llvm/test/tools/dxil-dis/constantexpr-gep.ll
    M llvm/unittests/Target/DirectX/PointerTypeAnalysisTests.cpp

  Log Message:
  -----------
  [DirectX] Fix the writing of ConstantExpr GEPs to DXIL bitcode (#154446)

Fixes #153304

Changes:
- When writing `ConstantExpr` GEPs to DXIL bitcode, the bitcode writer
will use the old Constant Code `CST_CODE_CE_GEP_OLD = 12` instead of the
newer `CST_CODE_CE_GEP = 32` which is interpreted as an undef in DXIL.
Additional context: [CST_CODE_CE_GEP = 12 in
DXC](https://github.com/microsoft/DirectXShaderCompiler/blob/0c9e75e7e91bb18fab101abc81d399a0296f499e/include/llvm/Bitcode/LLVMBitCodes.h#L187)
while the same constant code is labeled [CST_CODE_CE_GEP_OLD in
LLVM](https://github.com/llvm/llvm-project/blob/65de318d186c815f43b892aa20b98c50f22ab6fe/llvm/include/llvm/Bitcode/LLVMBitCodes.h#L411)
- Modifies the `PointerTypeAnalysis` to be able to analyze pointer-typed
constants that appear in the operands of instructions so that the
correct type of the `ConstantExpr` GEP is determined and written into
the DXIL bitcode.
- Adds a `PointerTypeAnalysis` test and dxil-dis test to ensure that the
pointer type of `ConstantExpr` GEPs are resolved and `ConstantExpr` GEPs
are written to DXIL bitcode correctly

In addition, this PR also adds a missing call to
`GV.removeDeadConstantUsers()` in the DXILFinalizeLinkage pass, and
removes an unnecessary manual removal of a ConstantExpr in the
DXILFlattenArrays pass.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list