[clang] [Clang][HLSL] Start emitting structured GEP instruction (PR #177332)

Eli Friedman via cfe-commits cfe-commits at lists.llvm.org
Thu Jan 29 09:45:20 PST 2026


Nathan =?utf-8?q?Gauër?= <brioche at google.com>,
Nathan =?utf-8?q?Gauër?= <brioche at google.com>,
Nathan =?utf-8?q?Gauër?= <brioche at google.com>,
Nathan =?utf-8?q?Gauër?= <brioche at google.com>,
Nathan =?utf-8?q?Gauër?= <brioche at google.com>,
Nathan =?utf-8?q?Gauër?= <brioche at google.com>,
Nathan =?utf-8?q?Gauër?= <brioche at google.com>
Message-ID:
In-Reply-To: <llvm.org/llvm/llvm-project/pull/177332 at github.com>


================
@@ -4498,6 +4498,9 @@ Address CodeGenFunction::EmitArrayToPointerDecay(const Expr *E,
   if (!E->getType()->isVariableArrayType()) {
     assert(isa<llvm::ArrayType>(Addr.getElementType()) &&
            "Expected pointer to array");
+
+    if (getLangOpts().HLSL && getLangOpts().EmitStructuredGEP)
+      return Addr;
----------------
efriedma-quic wrote:

If you want to match the AST, you can have two SGEPs: "p2 = gep p, 0, 0", then "result = gep p2, i".

If that doesn't work for some reason, you probably want some dedicated codepath that actually avoids the decay.  Changing EmitArrayToPointerDecay so it doesn't actually decay is really confusing.

https://github.com/llvm/llvm-project/pull/177332


More information about the cfe-commits mailing list