=?utf-8?q?Félix?= Cloutier <fclout...@apple.com>, =?utf-8?q?Félix?= Cloutier <fclout...@apple.com>, =?utf-8?q?Félix?= Cloutier <fclout...@apple.com>, =?utf-8?q?Félix?= Cloutier <fclout...@apple.com>, =?utf-8?q?Félix?= Cloutier <fclout...@apple.com>, =?utf-8?q?Félix?= Cloutier <fclout...@apple.com>, =?utf-8?q?Félix?= Cloutier <fclout...@apple.com> Message-ID: In-Reply-To: <llvm.org/llvm/llvm-project/pull/135...@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: The explanation makes sense now, thank you. From what I can tell, though, `GetLValueAsStringLiteral` would just be `dyn_cast_or_null<StringLiteral>(String.getLValueBase().dyn_cast<const Expr *>())`, and `EvaluateStringLiteralSize` would be the rest of the current `StringLValueIsLiteral`. It would also need to take all of the current `EvalInfo`, `LValue` and `QualType` arguments instead of the `StringLiteral` value. I think this makes the separation rather awkward. I'm still planning to rename it to `GetLValueAsStringLiteralAndOffset` or something like that. https://github.com/llvm/llvm-project/pull/135864 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits