[PATCH] D136532: [clang][Interp] Implement left and right shifts

2022-10-27 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/test/AST/Interp/shifts.cpp:57 +//c >>= 99; // expected-warning {{shift count >= width of type}} +//c <<= CHAR_BIT; // expected-warning {{shift count >= width of type}} +//c >>= CHAR_BIT; // expected-warning {{shift

[PATCH] D136839: [clang][Interp] Handle non-primitive locals without initializer

2022-10-27 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder created this revision. tbaeder added reviewers: aaron.ballman, erichkeane, tahonermann, shafik. Herald added a project: All. tbaeder requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. This previously made us crash later on when passing

[PATCH] D136532: [clang][Interp] Implement left and right shifts

2022-10-27 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 471138. tbaeder marked 5 inline comments as done. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D136532/new/ https://reviews.llvm.org/D136532 Files: clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/Interp.h clang/lib/AST/Interp/Opco

[PATCH] D136532: [clang][Interp] Implement left and right shifts

2022-10-27 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/Interp.h:1291-1305 + if (RHS.isNegative()) { const SourceInfo &Loc = S.Current->getSource(OpPC); S.CCEDiag(Loc, diag::note_constexpr_negative_shift) << RHS.toAPSInt(); -return ShiftLeft(S, OpPC, LHS, T

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-27 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/PrimType.h:39 PT_Bool, + PT_Float, PT_Ptr, sepavloff wrote: > In contrast to other members of this enumeration, `PT_Float` does not > designate a concrete type, and it must creates problems.

[PATCH] D135366: [clang][Interp] Implement String- and CharacterLiterals

2022-10-27 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 471144. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D135366/new/ https://reviews.llvm.org/D135366 Files: clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/ByteCodeExprGen.h clang/test/AST/Interp/literals.cpp clang/test/Lexer/char

[PATCH] D136694: [clang][Interp] Check that constructor calls initialize all record fields

2022-10-27 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 471161. tbaeder marked an inline comment as done. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D136694/new/ https://reviews.llvm.org/D136694 Files: clang/lib/AST/Interp/Descriptor.cpp clang/lib/AST/Interp/Interp.cpp clang/lib/AST/Interp/Interp.

[PATCH] D136828: [clang][Interp] Diagnose uninitialized array record fields

2022-10-27 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder marked 3 inline comments as done. tbaeder added inline comments. Comment at: clang/lib/AST/Interp/Interp.cpp:501 } else if (FieldType->isArrayType()) { - // FIXME: Arrays need to be handled here as well I think. + const ArrayType *AT = FieldType->getAsArray

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-27 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/PrimType.h:39 PT_Bool, + PT_Float, PT_Ptr, sepavloff wrote: > tbaeder wrote: > > sepavloff wrote: > > > In contrast to other members of this enumeration, `PT_Float` does not > > > designate a

[PATCH] D136828: [clang][Interp] Diagnose uninitialized array record fields

2022-10-27 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 471404. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D136828/new/ https://reviews.llvm.org/D136828 Files: clang/lib/AST/Interp/Interp.cpp clang/lib/AST/Interp/Pointer.h clang/test/AST/Interp/cxx20.cpp Index: clang/test/AST/Interp/cxx20.cpp ===

[PATCH] D135858: [clang][Interp] Support pointer arithmetic in binary operators

2022-10-27 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder marked an inline comment as done. tbaeder added inline comments. Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:241 + // Pointer arithmethic special case. This is supported for one of + // LHS and RHS being a pointer type and the other being an integer type. + if

[PATCH] D136920: [clang][Interp] Array initialization via CXXConstructExpr

2022-10-28 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder created this revision. tbaeder added reviewers: aaron.ballman, erichkeane, tahonermann, shafik. Herald added a project: All. tbaeder requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. Repository: rG LLVM Github Monorepo https://revi

[PATCH] D136936: [clang][Interp] Handle undefined functions better

2022-10-28 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder created this revision. tbaeder added reviewers: aaron.ballman, erichkeane, tahonermann, shafik. Herald added a project: All. tbaeder requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. Make sure we add body-less functions to our program

[PATCH] D135366: [clang][Interp] Implement String- and CharacterLiterals

2022-10-28 Thread Timm Bäder via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rG6fa1795d1fd4: [clang][Interp] Implement String- and CharacterLiterals (authored by tbaeder). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D135366/new/ https

[PATCH] D136941: [clang][Interp] Implement String-and CharacterLiterals

2022-10-28 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder created this revision. Herald added a project: All. tbaeder requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. Including a fix for the ambiguous APInt constructor. Precommit CI should work on this now. Repository: rG LLVM Github M

[PATCH] D136941: [clang][Interp] Implement String-and CharacterLiterals

2022-10-28 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 471505. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D136941/new/ https://reviews.llvm.org/D136941 Files: clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/ByteCodeExprGen.h clang/test/AST/Interp/literals.cpp clang/test/Lexer/char

[PATCH] D136694: [clang][Interp] Check that constructor calls initialize all record fields

2022-10-28 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/Interp.cpp:465 +bool CheckCtorCall(InterpState &S, CodePtr OpPC, const Pointer &This) { + assert(!This.isZero()); + const Record *R = This.getRecord(); shafik wrote: > Should we also check `isLive(

[PATCH] D136936: [clang][Interp] Handle undefined functions better

2022-10-28 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 471517. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D136936/new/ https://reviews.llvm.org/D136936 Files: clang/lib/AST/Interp/ByteCodeEmitter.cpp clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/Context.cpp clang/lib/AST/Interp/

[PATCH] D136920: [clang][Interp] Array initialization via CXXConstructExpr

2022-10-28 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 471534. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D136920/new/ https://reviews.llvm.org/D136920 Files: clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/ByteCodeExprGen.h clang/test/AST/Interp/arrays.cpp Index: clang/test/AST/In

[PATCH] D136012: [clang][Interp] Fix record members of reference type

2022-10-28 Thread Timm Bäder via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. tbaeder marked an inline comment as done. Closed by commit rG0ccff030f3b4: [clang][Interp] Fix record members of reference type (authored by tbaeder). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https

[PATCH] D136013: [clang][Interp] Fix ignoring expression return values

2022-10-28 Thread Timm Bäder via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG38ffc89c87ac: [clang][Interp] Fix ignoring expression return values (authored by tbaeder). Changed prior to commit: https://reviews.llvm.org/D1360

[PATCH] D136826: [clang][Interp] Make sure we free() allocated InitMaps

2022-10-28 Thread Timm Bäder via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rGee9bbfa5e6ac: [clang][Interp] Make sure we free() allocated InitMaps (authored by tbaeder). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D136826/new/ https:

[PATCH] D136956: [clang][Interp] Implement BitXor opcode

2022-10-28 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder created this revision. tbaeder added reviewers: aaron.ballman, erichkeane, tahonermann, shafik. Herald added a project: All. tbaeder requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. Repository: rG LLVM Github Monorepo https://revi

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-28 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 471565. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 Files: clang/lib/AST/CMakeLists.txt clang/lib/AST/ExprConstant.cpp clang/lib/AST/Interp/Boolean.h clang/lib/AST/Interp/ByteCodeExprGen.cpp cl

[PATCH] D136423: [clang][Interp] Implement inc/dec postfix and prefix operators

2022-10-28 Thread Timm Bäder via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rGf79f64b8d082: [clang][Interp] Implement inc and dec operators (authored by tbaeder). Changed prior to commit: https://reviews.llvm.org/D136423?vs=

[PATCH] D135858: [clang][Interp] Support pointer arithmetic in binary operators

2022-10-28 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 471711. tbaeder marked 2 inline comments as done. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D135858/new/ https://reviews.llvm.org/D135858 Files: clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/ByteCodeExprGen.h clang/lib/AST/In

[PATCH] D135858: [clang][Interp] Support pointer arithmetic in binary operators

2022-10-28 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/Interp.h:970 + if (!Pointer::hasSameArray(LHS, RHS)) { +// TODO: Diagnose. +return false; shafik wrote: > tbaeder wrote: > > This is also not being diagnosed (only rejected) by the current

[PATCH] D135750: [clang][Interp] Track initialization state of local variables

2022-10-28 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 471713. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D135750/new/ https://reviews.llvm.org/D135750 Files: clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/ByteCodeStmtGen.cpp clang/lib/AST/Interp/Context.cpp clang/lib/AST/Interp/

[PATCH] D136815: [clang][Interp] Ignore visitDecl() for local declarations

2022-10-29 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 471731. tbaeder edited the summary of this revision. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D136815/new/ https://reviews.llvm.org/D136815 Files: clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/ByteCodeExprGen.h clang/lib/AST

[PATCH] D136839: [clang][Interp] Handle non-primitive locals without initializer

2022-10-29 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder abandoned this revision. tbaeder added a comment. This got merged into https://reviews.llvm.org/D136815, so abandoning. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D136839/new/ https://reviews.llvm.org/D136839

[PATCH] D136920: [clang][Interp] Array initialization via CXXConstructExpr

2022-10-29 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 471813. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D136920/new/ https://reviews.llvm.org/D136920 Files: clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/test/AST/Interp/arrays.cpp Index: clang/test/AST/Interp/arrays.cpp

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-29 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 471814. tbaeder added a comment. Moved the tests to their own file and moved the `isConstantContext()` changes to `InterpState` to their own NFC commit. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 Fil

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-30 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 471816. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 Files: clang/lib/AST/CMakeLists.txt clang/lib/AST/Interp/Boolean.h clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/ByteCodeExprGe

[PATCH] D136528: [clang][Interp] Implement add and sub compound assign operators

2022-10-30 Thread Timm Bäder via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG881547db03a6: [clang][Interp] Implement add and sub compound assign operators (authored by tbaeder). Changed prior to commit: https://reviews.llvm

[PATCH] D136532: [clang][Interp] Implement left and right shifts

2022-10-30 Thread Timm Bäder via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG6d965c94ba58: [clang][Interp] Implement left and right shifts (authored by tbaeder). Changed prior to commit: https://reviews.llvm.org/D136532?vs=

[PATCH] D136956: [clang][Interp] Implement BitXor opcode

2022-10-30 Thread Timm Bäder via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG74fb770de939: [clang][Interp] Implement bitXor opcode (authored by tbaeder). Changed prior to commit: https://reviews.llvm.org/D136956?vs=471560&i

[PATCH] D136815: [clang][Interp] Unify visiting variable declarations

2022-10-30 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 471905. tbaeder marked an inline comment as done. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D136815/new/ https://reviews.llvm.org/D136815 Files: clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/ByteCodeExprGen.h clang/lib/AST/In

[PATCH] D136815: [clang][Interp] Unify visiting variable declarations

2022-10-30 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:803 + // Make sure we don't accidentally register the same decl twice. + if (const Decl *VD = Src.dyn_cast(); VD && isa(VD)) { +assert(!P.getGlobal(cast(VD))); shafik wrote

[PATCH] D136815: [clang][Interp] Unify visiting variable declarations

2022-10-30 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 471906. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D136815/new/ https://reviews.llvm.org/D136815 Files: clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/ByteCodeExprGen.h clang/lib/AST/Interp/ByteCodeStmtGen.cpp clang/lib/AST/I

[PATCH] D137070: [clang][Interp] Support destructors

2022-10-31 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder created this revision. tbaeder added reviewers: aaron.ballman, erichkeane, tahonermann, shafik. Herald added a project: All. tbaeder requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. Try to use the existing cleanup machinery to implem

[PATCH] D137071: [clang][Interp] Implement missing compound assign operators

2022-10-31 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder created this revision. tbaeder added reviewers: aaron.ballman, erichkeane, tahonermann, shafik. Herald added a project: All. tbaeder requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. Repository: rG LLVM Github Monorepo https://revi

[PATCH] D137071: [clang][Interp] Implement missing compound assign operators

2022-10-31 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 471965. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D137071/new/ https://reviews.llvm.org/D137071 Files: clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/test/AST/Interp/literals.cpp Index: clang/test/AST/Interp/literals.cpp =

[PATCH] D137070: [clang][Interp] Support destructors

2022-10-31 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 471971. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D137070/new/ https://reviews.llvm.org/D137070 Files: clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/ByteCodeExprGen.h clang/lib/AST/Interp/ByteCodeStmtGen.cpp clang/test/AST/

[PATCH] D136826: [clang][Interp] Make sure we free() allocated InitMaps

2022-10-31 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/Program.h:54-56 +for (Global *G : Globals) { + G->block()->invokeDtor(); +} antondaubert wrote: > Seems like this change generates a > > ``` > use-of-uninitialized-value lib/AST/Interp/

[PATCH] D137082: [clang][Interp] Fix dereferencing arrays with no offset applied

2022-10-31 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder created this revision. tbaeder added reviewers: aaron.ballman, erichkeane, tahonermann, shafik. Herald added a project: All. tbaeder requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. There is a difference between a `Pointer` and a "`P

[PATCH] D136815: [clang][Interp] Unify visiting variable declarations

2022-11-01 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/ByteCodeExprGen.h:282 + bool isGlobalDecl(const VarDecl *VD) const { +return !VD->hasLocalStorage() || VD->isConstexpr(); + } shafik wrote: > tbaeder wrote: > > shafik wrote: > > > Why not `has

[PATCH] D137082: [clang][Interp] Fix dereferencing arrays with no offset applied

2022-11-01 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added a comment. In D137082#3899032 , @aaron.ballman wrote: >> There is a difference between a Pointer and a "Pointer to the first element >> of an array". > > I'm pretty confused because this statement is false per the language standard > (htt

[PATCH] D130894: [clang] Print more information about failed static assertions

2022-08-10 Thread Timm Bäder via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rG09117b21890c: [clang][sema] Print more information about failed static assertions (authored by tbaeder). Changed prior to commit: https://reviews.llvm.org/D130894?vs=451143&id=451744#toc Repository:

[PATCH] D131662: [clang] Try to improve diagnostics about uninitialized constexpr variables

2022-08-11 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder created this revision. tbaeder added a reviewer: aaron.ballman. Herald added a project: All. tbaeder requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. Consider: constexpr int a; the error message for this is currently: error: d

[PATCH] D131888: [Clang][Interp] Add some basic functionality to the experimental new constant interpreter

2022-08-15 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder created this revision. tbaeder added reviewers: aaron.ballman, shafik, erichkeane, MaskRay, rsmith, nand, nandor. Herald added a subscriber: StephenFan. Herald added a project: All. tbaeder requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-com

[PATCH] D131888: [Clang][Interp] Add some basic functionality to the experimental new constant interpreter

2022-08-15 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added a comment. Thanks for the fast reply, Erich! In D131888#3723017 , @erichkeane wrote: > So you're right, we haven't seen much work on this interpreter in a while, > and I have no real experience with reviewing it at all, which I'm sure is

[PATCH] D131942: [clang][Inter[ Implement bool and nullptr literal expressions

2022-08-15 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder created this revision. tbaeder added reviewers: aaron.ballman, erichkeane, shafik, nand, nandor, rsmith. Herald added a project: All. tbaeder requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. This is split out from https://reviews.ll

[PATCH] D131942: [clang][Inter[ Implement bool and nullptr literal expressions

2022-08-17 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/Disasm.cpp:26 inline std::enable_if_t::value, T> ReadArg(Program &P, - CodePtr OpPC) { + Co

[PATCH] D131942: [clang][Inter[ Implement bool and nullptr literal expressions

2022-08-17 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 453284. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D131942/new/ https://reviews.llvm.org/D131942 Files: clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/ByteCodeExprGen.h clang/lib/AST/Interp/Disasm.cpp clang/lib/AST/Interp/Fun

[PATCH] D131942: [clang][Interp] Implement bool and nullptr literal expressions

2022-08-17 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder marked 3 inline comments as done. tbaeder added inline comments. Comment at: clang/lib/AST/Interp/Disasm.cpp:26 inline std::enable_if_t::value, T> ReadArg(Program &P, - CodePtr OpPC) { +

[PATCH] D131942: [clang][Interp] Implement bool and nullptr literal expressions

2022-08-17 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added a comment. In D131942#3729057 , @aaron.ballman wrote: > In D131942#3728994 , @erichkeane > wrote: > >> In D131942#3728974 , >> @aaron.ballman wrote: >> >>

[PATCH] D131662: [clang] Try to improve diagnostics about uninitialized constexpr variables

2022-08-17 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder marked an inline comment as done. tbaeder added inline comments. Comment at: clang/lib/Sema/SemaInit.cpp:8063 // handled in the Failed() branch above. -QualType DestType = Entity.getType(); -S.Diag(Kind.getLocation(), DiagID) -<< DestType << (bool)Des

[PATCH] D131662: [clang] Try to improve diagnostics about uninitialized constexpr variables

2022-08-17 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/Sema/SemaFixItUtils.cpp:208-210 + if (T->isArrayType()) { +return " = {}"; + } aaron.ballman wrote: > I don't think this is a good change, consider: > ``` > int array[] = {}; > ``` > zero-sized arrays are

[PATCH] D131942: [clang][Interp] Implement bool and nullptr literal expressions

2022-08-17 Thread Timm Bäder via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rGa2a5470fc249: [clang][Interp] Implement boolean and nullptr literals (authored by tbaeder). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D131942/new/ https:

[PATCH] D132098: [clang][Interp] Implement inv and neg unary operations

2022-08-17 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder created this revision. tbaeder added reviewers: erichkeane, aaron.ballman. Herald added a project: All. tbaeder requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. Implement inverting and negating values Repository: rG LLVM Github M

[PATCH] D132098: [clang][Interp] Implement inv and neg unary operations

2022-08-17 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:123 - default: { -// TODO: implement other casts. -return this->bail(CE); - } + case CK_IntegralToBoolean: +if (Optional T = classify(SubExpr->getType())) { Imple

[PATCH] D132111: [clang][Interp] Implement pointer (de)ref operations and DeclRefExprs

2022-08-18 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder created this revision. tbaeder added reviewers: aaron.ballman, erichkeane. Herald added a project: All. tbaeder requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. I wanted to do only pointers here, but they are impossible to test witho

[PATCH] D132111: [clang][Interp] Implement pointer (de)ref operations and DeclRefExprs

2022-08-18 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:649 + return DiscardResult ? this->emitPop(T, E) : true; +}); case UO_Not:// ~x Handling the deref like this breaks assigning, e.g. `int m = 10; int *p = &

[PATCH] D132111: [clang][Interp] Implement pointer (de)ref operations and DeclRefExprs

2022-08-18 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 453610. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D132111/new/ https://reviews.llvm.org/D132111 Files: clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/ByteCodeExprGen.h clang/test/AST/Interp/cxx20.cpp clang/test/AST/Interp/li

[PATCH] D132111: [clang][Interp] Implement pointer (de)ref operations and DeclRefExprs

2022-08-18 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 453617. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D132111/new/ https://reviews.llvm.org/D132111 Files: clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/ByteCodeExprGen.h clang/test/AST/Interp/cxx20.cpp clang/test/AST/Interp/li

[PATCH] D132111: [clang][Interp] Implement pointer (de)ref operations and DeclRefExprs

2022-08-18 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 453618. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D132111/new/ https://reviews.llvm.org/D132111 Files: clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/ByteCodeExprGen.h clang/test/AST/Interp/cxx20.cpp clang/test/AST/Interp/li

[PATCH] D132111: [clang][Interp] Implement pointer (de)ref operations and DeclRefExprs

2022-08-18 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 453619. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D132111/new/ https://reviews.llvm.org/D132111 Files: clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/ByteCodeExprGen.h clang/test/AST/Interp/cxx20.cpp clang/test/AST/Interp/li

[PATCH] D132111: [clang][Interp] Implement pointer (de)ref operations and DeclRefExprs

2022-08-18 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 453624. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D132111/new/ https://reviews.llvm.org/D132111 Files: clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/ByteCodeExprGen.h clang/test/AST/Interp/cxx20.cpp clang/test/AST/Interp/li

[PATCH] D132111: [clang][Interp] Implement pointer (de)ref operations and DeclRefExprs

2022-08-18 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:215 +return false; + return DiscardResult ? this->emitPopPtr(BO) : true; default: erichkeane wrote: > Can you explain what this is doing for me? The `Store` oper

[PATCH] D132136: [clang] Perform implicit lvalue-to-rvalue cast with new interpreter

2022-08-18 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder created this revision. tbaeder added reviewers: erichkeane, aaron.ballman, shafik, tahonermann. Herald added a project: All. tbaeder requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. Extra bonus patch. The EvaluateAsRValue() document

[PATCH] D131662: [clang] Try to improve diagnostics about uninitialized constexpr variables

2022-08-18 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 453664. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D131662/new/ https://reviews.llvm.org/D131662 Files: clang/lib/Sema/SemaDecl.cpp clang/lib/Sema/SemaInit.cpp clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p1.cpp clang/test/CXX/dcl.dcl/dcl.

[PATCH] D131662: [clang] Try to improve diagnostics about uninitialized constexpr variables

2022-08-18 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added a comment. The new version also gets the new error message for `constexpr int foo[2];`. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D131662/new/ https://reviews.llvm.org/D131662 ___ cfe-commits mailing list cfe-commits@lists.ll

[PATCH] D132098: [clang][Interp] Implement inv and neg unary operations

2022-08-18 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:620 + case UO_Deref: // *x + case UO_Not:// ~x + case UO_Real: // __real x aaron.ballman wrote: > This is reachable and will always return true thanks to the magic of in

[PATCH] D132111: [clang][Interp] Implement pointer (de)ref operations and DeclRefExprs

2022-08-18 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/test/AST/Interp/literals.cpp:41 + +constexpr const int* getIntPointer() { + return &m; shafik wrote: > What are these functions testing? Functions take a slightly different code path where actual bytecode is gene

[PATCH] D132136: [clang] Perform implicit lvalue-to-rvalue cast with new interpreter

2022-08-18 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/ExprConstant.cpp:14938 + + if (E->getType().isNull()) +return false; shafik wrote: > Curious why these two checks don't go w/ the `::Evaluate(Result, Info, E)` > below. No real reason I think, it's ju

[PATCH] D131662: [clang] Try to improve diagnostics about uninitialized constexpr variables

2022-08-18 Thread Timm Bäder via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG3d2ab237f157: [clang] Improve diagnostics for uninitialized constexpr variables (authored by tbaeder). Changed prior to commit: https://reviews.ll

[PATCH] D132098: [clang][Interp] Implement inv and neg unary operations

2022-08-19 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 453917. tbaeder added a comment. When changing the test to use `-verify=test`, I noticed that `static_assert(-false)` did not assert. I had to implement integral casts (only from sint32 to bool for now) in this patch as well to make it work. CHANGES SINCE

[PATCH] D132098: [clang][Interp] Implement inv and neg unary operations

2022-08-19 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/Integral.h:173 + } + template static Integral from(Integral<0, SrcSign> Value) { I'm a bit out of my element with the template magic here. CHANGES SINCE LAST ACTION https://reviews.llvm.org/

[PATCH] D132098: [clang][Interp] Implement inv and neg unary operations

2022-08-19 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:620 + case UO_Deref: // *x + case UO_Not:// ~x + case UO_Real: // __real x aaron.ballman wrote: > tbaeder wrote: > > aaron.ballman wrote: > > > This is reachable and wil

[PATCH] D132098: [clang][Interp] Implement inv and neg unary operations

2022-08-19 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 453968. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D132098/new/ https://reviews.llvm.org/D132098 Files: clang/lib/AST/Interp/Boolean.h clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/ByteCodeExprGen.h clang/lib/AST/Interp/Inte

[PATCH] D132098: [clang][Interp] Implement inv and neg unary operations

2022-08-19 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/Integral.h:173 + } + template static Integral from(Integral<0, SrcSign> Value) { erichkeane wrote: > aaron.ballman wrote: > > tbaeder wrote: > > > aaron.ballman wrote: > > > > tbaeder wrote: > >

[PATCH] D132098: [clang][Interp] Implement inv and neg unary operations

2022-08-19 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 453970. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D132098/new/ https://reviews.llvm.org/D132098 Files: clang/lib/AST/Interp/Boolean.h clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/ByteCodeExprGen.h clang/lib/AST/Interp/Inte

[PATCH] D132098: [clang][Interp] Implement inv and neg unary operations

2022-08-19 Thread Timm Bäder via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rG80bbc05436d9: [clang][Interp] Implement inv and neg unary operations (authored by tbaeder). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D132098/new/ https:

[PATCH] D132111: [clang][Interp] Implement pointer (de)ref operations and DeclRefExprs

2022-08-19 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder marked 3 inline comments as done. tbaeder added inline comments. Comment at: clang/test/AST/Interp/cxx20.cpp:2 +// RUN: %clang_cc1 -fexperimental-new-constant-interpreter -std=c++20 -verify %s +// RUN: %clang_cc1 -std=c++20 -verify %s -DREFERENCE + tahon

[PATCH] D132111: [clang][Interp] Implement pointer (de)ref operations and DeclRefExprs

2022-08-19 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 454045. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D132111/new/ https://reviews.llvm.org/D132111 Files: clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/ByteCodeExprGen.h clang/test/AST/Interp/cxx20.cpp clang/test/AST/Interp/li

[PATCH] D132111: [clang][Interp] Implement pointer (de)ref operations and DeclRefExprs

2022-08-19 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 454164. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D132111/new/ https://reviews.llvm.org/D132111 Files: clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/ByteCodeExprGen.h clang/test/AST/Interp/cxx20.cpp clang/test/AST/Interp/li

[PATCH] D132111: [clang][Interp] Implement pointer (de)ref operations and DeclRefExprs

2022-08-19 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder marked 5 inline comments as done. tbaeder added inline comments. Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:662 + return this->emitGetPtrParam(It->second, E); + } + tahonermann wrote: > Perhaps add: > else { > assert(0 && "Unhandled

[PATCH] D132286: [clang][Interp] Implement function calls

2022-08-20 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder created this revision. tbaeder added reviewers: erichkeane, aaron.ballman, shafik, tahonermann. Herald added a project: All. tbaeder requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. Add a `Call` op and use the existing infrastructure

[PATCH] D132286: [clang][Interp] Implement function calls

2022-08-20 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/Interp.cpp:60 + S.Current = + new InterpFrame(S, const_cast(Func), S.Current, PC, {}); + This patch adds two `const_cast`s. They aren't strictly necessary, since the `InterpFrame` doesn't need

[PATCH] D132286: [clang][Interp] Implement function calls

2022-08-21 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 454386. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D132286/new/ https://reviews.llvm.org/D132286 Files: clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/ByteCodeExprGen.h clang/lib/AST/Interp/Context.h clang/lib/AST/Interp/Eval

[PATCH] D132286: [clang][Interp] Implement function calls

2022-08-21 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/test/AST/Interp/functions.cpp:38 +static_assert(add_second(10, 3, true) == 13, ""); +static_assert(add_second(300, -20, false) == 300, ""); shafik wrote: > I would expect a lot more test cases: trailing return type

[PATCH] D132286: [clang][Interp] Implement function calls

2022-08-21 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 454389. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D132286/new/ https://reviews.llvm.org/D132286 Files: clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/ByteCodeExprGen.h clang/lib/AST/Interp/EvalEmitter.cpp clang/lib/AST/Inter

[PATCH] D132286: [clang][Interp] Implement function calls

2022-08-22 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder marked 4 inline comments as done. tbaeder added inline comments. Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:614 + +if (Optional T = classify(E->getType())) { + // Put arguments on the stack. aaron.ballman wrote: > Should this be using `

[PATCH] D132286: [clang][Interp] Implement function calls

2022-08-23 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 454723. tbaeder marked 3 inline comments as done. tbaeder added a comment. I noticed two problems: 1. Calls returning void didn't work. That needed another new opcode 2. When creating a new stackframe and running `Intepret()`... there's nothing actually stop

[PATCH] D132286: [clang][Interp] Implement function calls

2022-08-23 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 454726. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D132286/new/ https://reviews.llvm.org/D132286 Files: clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/ByteCodeExprGen.h clang/lib/AST/Interp/EvalEmitter.cpp clang/lib/AST/Inter

[PATCH] D132111: [clang][Interp] Implement pointer (de)ref operations and DeclRefExprs

2022-08-23 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:662 + return this->emitGetPtrParam(It->second, E); + } + tahonermann wrote: > tbaeder wrote: > > tahonermann wrote: > > > Perhaps add: > > > else { > > > assert(0 && "

[PATCH] D108211: Emit sizeof/alignof values as notes when a static_assert fails

2022-08-25 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added a comment. From looking at the output in the test cases, the additional diagnostics seem unnecessary to me in almost all cases...? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D108211/new/ https://reviews.llvm.org/D108211

[PATCH] D132111: [clang][Interp] Implement pointer (de)ref operations and DeclRefExprs

2022-08-25 Thread Timm Bäder via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rGfdfc0dfa8ee3: [clang][Interp] Implement pointer (de)ref operators (authored by tbaeder). Changed prior to commit: https://reviews.llvm.org/D132111

[PATCH] D132286: [clang][Interp] Implement function calls

2022-08-25 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 455791. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D132286/new/ https://reviews.llvm.org/D132286 Files: clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/ByteCodeExprGen.h clang/lib/AST/Interp/EvalEmitter.cpp clang/lib/AST/Inter

[PATCH] D132136: [clang] Perform implicit lvalue-to-rvalue cast with new interpreter

2022-08-25 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 455792. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D132136/new/ https://reviews.llvm.org/D132136 Files: clang/lib/AST/ExprConstant.cpp clang/test/AST/Interp/literals.cpp Index: clang/test/AST/Interp/literals.cpp ==

<    1   2   3   4   5   6   7   8   9   10   >