nickdesaulniers added inline comments.
================
Comment at: clang/lib/CodeGen/CGExprConstant.cpp:1324
// This is a string literal initializing an array in an initializer.
- return CGM.GetConstantArrayFromStringLiteral(E);
+ return E->isLValue() ?
+ CGM.GetAddrOfConstantStringFromLiteral(E).getPointer() :
----------------
nickdesaulniers wrote:
> efriedma wrote:
> > nickdesaulniers wrote:
> > > efriedma wrote:
> > > > Maybe we should have a separate ConstExprEmitterLValue... trying to
> > > > handle both LValues and RValues on the same codepath has been
> > > > problematic in the past. It's very easy for code to get confused what
> > > > it's actually trying to emit.
> > > So we'd have a `ConstExprEmitterLValue` class with some visitor methods,
> > > and a `ConstExprEmitterRValue` with other methods implemented?
> > Something like that.
> >
> > Actually thinking about it a bit more, not sure you need to actually
> > implement ConstExprEmitterLValue for now. You might just be able to ensure
> > we don't ever call ConstExprEmitter with an lvalue. The current
> > ConstExprEmitter doesn't expect lvalues, and shouldn't call itself with
> > lvalues. (We bail on explicit LValueToRValue conversions.) And Evaluate()
> > shouldn't actually evaluate the contents of an lvalue if it isn't
> > dereferenced, so there hopefully aren't any performance issues using that
> > codepath.
> >
> > In terms of implementation, I guess that's basically restoring the
> > destType->isReferenceType() that got removed? (I know I suggested it, but
> > I wasn't really thinking about it...)
> One thing I think we may need to add to `ConstExprEmitter` is the ability to
> evaluate `CallExpr`s based on certain test case failures...does that seem
> right?
See also the calls to `constexpr f()` in
clang/test/CodeGenCXX/const-init-cxx1y.cpp
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D151587/new/
https://reviews.llvm.org/D151587
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits