[clang] [clang] Constant-evaluate format strings as last resort (PR #135864)

via cfe-commits cfe-commits at lists.llvm.org
Mon May 12 09:03:47 PDT 2025


=?utf-8?q?Félix?= Cloutier <fcloutier at apple.com>,
=?utf-8?q?Félix?= Cloutier <fcloutier at apple.com>,
=?utf-8?q?Félix?= Cloutier <fcloutier at apple.com>,
=?utf-8?q?Félix?= Cloutier <fcloutier at apple.com>,
=?utf-8?q?Félix?= Cloutier <fcloutier at apple.com>,
=?utf-8?q?Félix?= Cloutier <fcloutier at apple.com>,
=?utf-8?q?Félix?= Cloutier <fcloutier at apple.com>
Message-ID:
In-Reply-To: <llvm.org/llvm/llvm-project/pull/135864 at github.com>


================
@@ -1920,9 +1920,17 @@ static bool EvaluateComplex(const Expr *E, ComplexValue &Res, EvalInfo &Info);
 static bool EvaluateAtomic(const Expr *E, const LValue *This, APValue &Result,
                            EvalInfo &Info);
 static bool EvaluateAsRValue(EvalInfo &Info, const Expr *E, APValue &Result);
+static bool EvaluateStringAsLValue(EvalInfo &Info, const Expr *E,
+                                   QualType &CharTy, LValue &String);
+static const StringLiteral *StringLValueIsLiteral(EvalInfo &Info,
+                                                  LValue &String,
+                                                  QualType CharTy,
+                                                  uint64_t &Offset);
----------------
apple-fcloutier wrote:

Happy to rename `StringLValueIsLiteral` to `GetLValueAsStringLiteral`, but I don't understand what is being asked for `EvaluateStringLiteral`. What is being evaluated and what is the `unsigned` returned value?

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


More information about the cfe-commits mailing list