[PATCH] D74094: Reapply: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas

2023-09-20 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers updated this revision to Diff 557122. nickdesaulniers added a comment. - git clang-format HEAD~ Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74094/new/ https://reviews.llvm.org/D74094 Files: clang/docs/ReleaseNotes.rst

[PATCH] D74094: Reapply: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas

2023-09-20 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers updated this revision to Diff 557121. nickdesaulniers added a comment. - re-add sentence I accidentally dropped from the release note Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74094/new/ https://reviews.llvm.org/D74094 Files:

[PATCH] D74094: Reapply: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas

2023-09-20 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers updated this revision to Diff 557119. nickdesaulniers added a comment. - undo ReturnsReference checks, add -Xclang -sloppy-temporary-lifetimes, add test for that, add release note Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION

[PATCH] D74094: Reapply: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas

2023-09-20 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. In D74094#4648319 , @rjmccall wrote: >> That's better than the status quo (no lifetime markers at all) but still >> suboptimal, and I don't think it will solve the particular case I care about >> (a particular Linux

[PATCH] D74094: Reapply: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas

2023-09-18 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. (Sorry for the wall of text) In D74094#4646297 , @tellenbach wrote: > No real comment on the issue itself but on the example as a former Eigen > maintainer (sorry for the noise if that's all obvious for you): Woah! Deus

[PATCH] D74094: Reapply: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas

2023-09-14 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. In D74094#4646152 , @nickdesaulniers wrote: > In D74094#4645998 , @dexonsmith > wrote: > >> In D74094#4645562 , >> @nickdesaulniers

[PATCH] D74094: Reapply: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas

2023-09-14 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. In D74094#4645998 , @dexonsmith wrote: > In D74094#4645562 , @nickdesaulniers > wrote: > >> I don't yet fully comprehend yet what's going wrong, and probably need to >>

[PATCH] D74094: Reapply: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas

2023-09-13 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. In D74094#4643653 , @nickdesaulniers wrote: > With this change re-applied (`b7f4915644844fb9f32e8763922a070f5fe4fd29` > reverted), a.out runs without issue. So yes, I need something other than a > godbolt link which

[PATCH] D148381: [Clang] Implement the 'counted_by' attribute

2023-09-13 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added inline comments. Comment at: clang/lib/CodeGen/CGBuiltin.cpp:857 + if (IsDynamic) { +const LangOptions::StrictFlexArraysLevelKind StrictFlexArraysLevel = +getLangOpts().getStrictFlexArraysLevel(); aaron.ballman wrote: >

[PATCH] D148381: [Clang] Implement the 'counted_by' attribute

2023-09-13 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a subscriber: jyknight. nickdesaulniers added inline comments. Comment at: clang/lib/CodeGen/CGBuiltin.cpp:857 + if (IsDynamic) { +const LangOptions::StrictFlexArraysLevelKind StrictFlexArraysLevel = +getLangOpts().getStrictFlexArraysLevel();

[PATCH] D148381: [Clang] Implement the 'counted_by' attribute

2023-09-13 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. Perhaps worth updating the release notes, too. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D148381/new/ https://reviews.llvm.org/D148381 ___ cfe-commits mailing list

[PATCH] D148381: [Clang] Implement the 'counted_by' attribute

2023-09-13 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. Also, I encourage you to test a build of the linux kernel with __counted_by BEFORE merging this! Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D148381/new/ https://reviews.llvm.org/D148381

[PATCH] D148381: [Clang] Implement the 'counted_by' attribute

2023-09-13 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers accepted this revision. nickdesaulniers added a comment. This revision is now accepted and ready to land. Thanks for the patch! Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D148381/new/ https://reviews.llvm.org/D148381

[PATCH] D74094: Reapply: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas

2023-09-11 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. In D74094#4643577 , @rjmccall wrote: > In D74094#4643558 , @nickdesaulniers > wrote: > >> In D74094#4643495 , @rjmccall wrote: >> >>> I

[PATCH] D74094: Reapply: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas

2023-09-11 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. In D74094#4643495 , @rjmccall wrote: > I can't easily tell you because the "standalone example" involves a million > templates that I don't know anything about, and nobody seems to have done the > analysis to identify

[PATCH] D74094: Reapply: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas

2023-09-11 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers planned changes to this revision. nickdesaulniers added a comment. In D74094#4643439 , @rjmccall wrote: > Under [expr.call]p6 (https://eel.is/c++draft/expr.call#6), it is > implementation-defined whether the lifetime of a parameter ends

[PATCH] D159500: Reapply x2: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas

2023-09-11 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers abandoned this revision. nickdesaulniers added a comment. I hate arcanist! Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D159500/new/ https://reviews.llvm.org/D159500 ___ cfe-commits

[PATCH] D159500: Reapply x2: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas

2023-09-11 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers updated this revision to Diff 556462. nickdesaulniers added a comment. - update commit description Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D159500/new/ https://reviews.llvm.org/D159500 Files: clang/lib/CodeGen/CGCall.cpp

[PATCH] D74094: Reapply: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas

2023-09-11 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers updated this revision to Diff 556461. nickdesaulniers added a comment. This revision is now accepted and ready to land. - skip optimization when returning a reference; regardless of type - fix test run line - use --check-prefixes= - reflow RUN lines Repository: rG LLVM Github

[PATCH] D159500: Reapply x2: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas

2023-09-11 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers abandoned this revision. nickdesaulniers added a comment. meant to update another thread Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D159500/new/ https://reviews.llvm.org/D159500 ___

[PATCH] D159500: Reapply x2: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas

2023-09-11 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers created this revision. Herald added a subscriber: jvesely. Herald added a project: All. nickdesaulniers requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. This reverts commit b7f4915644844fb9f32e8763922a070f5fe4fd29

[PATCH] D74094: Reapply: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas

2023-09-11 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added inline comments. Comment at: clang/test/CodeGen/lifetime-call-temp.c:54 + + // CXX-NOT @llvm.lifetime + // CXX: ret void this check line looks broken; missing `:` Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION

[PATCH] D74094: Reapply: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas

2023-09-11 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. In D74094#4634966 , @rjmccall wrote: > Parameter objects are not temporaries and have their own lifetime rules, so > there's nothing wrong with this idea in principle. This seems to just be a > bug, probably that we're

[PATCH] D148381: [Clang] Add counted_by attribute

2023-09-08 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added inline comments. Comment at: clang/test/CodeGen/attr-counted-by.c:2 +// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 3 +// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -O2 -Wall

[PATCH] D159138: [clang][Sema] Fix format size estimator's handling of %o, %x, %X with alternative form

2023-09-08 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers accepted this revision. nickdesaulniers added a comment. This revision is now accepted and ready to land. Thanks for the patch! Comment at: clang/test/Sema/warn-fortify-source.c:100-102 + __builtin_snprintf(buf, 2, "%#x", n); + __builtin_snprintf(buf, 2,

[PATCH] D148381: [Clang] Add counted_by attribute

2023-09-07 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. Patch LGTM; just want moar tests. --- Mind adding a test for #if !__has_attribute(counted_by) #error "has attribute broken" #endif Comment at: clang/test/CodeGen/attr-counted-by.c:2 +// NOTE: Assertions have been autogenerated by

[PATCH] D159307: [Sema] add test cases for D152495 NFC

2023-08-31 Thread Nick Desaulniers via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rGcfa578cde031: [Sema] add test cases for D152495 NFC (authored by nickdesaulniers). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D159307/new/

[PATCH] D159307: [Sema] add test cases for D152495

2023-08-31 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers created this revision. Herald added a project: All. nickdesaulniers requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. Ensure these don't regress the next time we reland D152495 . Link:

[PATCH] D152495: [Clang][SemaCXX] Add unused warning for variables declared in condition expressions

2023-08-31 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. Here's a more blatant regression caused by this patch. https://godbolt.org/z/q19Ge64G3 Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D152495/new/ https://reviews.llvm.org/D152495

[PATCH] D159138: [clang][Sema] Fix format size estimator's handling of %o, %x, %X with alternative form

2023-08-31 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added inline comments. Comment at: clang/test/Sema/warn-fortify-source.c:100-102 + __builtin_snprintf(buf, 2, "%#x", n); + __builtin_snprintf(buf, 2, "%#X", n); + __builtin_snprintf(buf, 2, "%#o", n); Note that GCC -Wformat-truncation can warn

[PATCH] D159138: [clang][Sema] Fix format size estimator's handling of %o, %x, %X with alternative form

2023-08-30 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. Mind adding tests for `%#X` and `%#o` as well, since you're changing the behavior of those, too? I think it would also be good to have explicit tests for `%o` and `%b` where the value being printed was and was not `0`. IIUC, we cannot diagnose those (unless a

[PATCH] D148381: [WIP][Clang] Add counted_by attribute

2023-08-29 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. I assume you plan to add some clang CodeGen tests at some point? Comment at: clang/lib/CodeGen/CGBuiltin.cpp:875-876 +if (auto *RD = DRE->getType()->getPointeeType()->getAsRecordDecl()) + for (FieldDecl *Field : RD->fields()) +

[PATCH] D158730: [DebugMetadata][DwarfDebug] Don't retain local types with -fno-eliminate-unused-debug-types

2023-08-24 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. Seems fine to me, but please triple check as the presubmit tests are failing. Perhaps you meant to mark this as a parent or child revision in phab with your other change, so that the presubmit builds know to apply both? See the box in the top right; Edit

[PATCH] D158562: [clang][Sema] Add truncation warning on fortified snprintf

2023-08-23 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. Thanks for the patch! Comment at: clang/lib/Sema/SemaChecking.cpp:1134 }; + auto ProcessFormatStringLiteral = + [&](const Expr *FormatExpr, StringRef , size_t ) { naive question, so will we create a lambda with capture

[PATCH] D148381: [WIP][Clang] Add counted_by attribute

2023-08-22 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added inline comments. Comment at: clang/lib/AST/Decl.cpp:4541-4544 +bool FieldDecl::isFlexibleArrayMemberLike( +ASTContext , +LangOptions::StrictFlexArraysLevelKind StrictFlexArraysLevel, +bool IgnoreTemplateOrMacroSubstitution) const {

[PATCH] D148381: [WIP][Clang] Add counted_by attribute

2023-08-22 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. Drive by code review!!! Comment at: clang/lib/AST/Decl.cpp:4541-4544 +bool FieldDecl::isFlexibleArrayMemberLike( +ASTContext , +LangOptions::StrictFlexArraysLevelKind StrictFlexArraysLevel, +bool IgnoreTemplateOrMacroSubstitution)

[PATCH] D158448: WIP

2023-08-21 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers created this revision. Herald added a project: All. nickdesaulniers requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D158448 Files:

[PATCH] D74094: Reapply: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas

2023-08-16 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. Thanks @lei for the help testing. Re-applied. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74094/new/ https://reviews.llvm.org/D74094 ___ cfe-commits mailing list

[PATCH] D74094: Reapply: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas

2023-08-16 Thread Nick Desaulniers via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rGe698695fbbf6: Reapply: [IRGen] Emit lifetime intrinsics around temporary aggregate argument… (authored by erik.pilkington, committed by nickdesaulniers). Repository: rG LLVM Github Monorepo CHANGES

[PATCH] D74094: Reapply: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas

2023-08-14 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. In D74094#4566543 , @nickdesaulniers wrote: > Hi @lei can you please help us retest this version of this patch that > previously broke your multistage build? >

[PATCH] D157440: [clang][ConstExprEmitter] handle BinaryOperators that don't have signedness or overflow concerns for integrals

2023-08-08 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers updated this revision to Diff 548358. nickdesaulniers edited the summary of this revision. nickdesaulniers added a comment. - use const & - add link to issue tracker Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D157440/new/

[PATCH] D157440: [clang][ConstExprEmitter] handle BinaryOperators that don't have signedness or overflow concerns for integrals

2023-08-08 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers created this revision. Herald added a project: All. nickdesaulniers requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. Handles binary operators: & ^ | == != Check that each side evaluates to a ConstantInt then combine the

[PATCH] D157435: [Sema] Do not emit -Wmissing-variable-declarations for register variables

2023-08-08 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers accepted this revision. nickdesaulniers added a comment. This revision is now accepted and ready to land. Thanks for the patch; I think it's better not to warn rather than expect users to add an `unsigned long currest_stack_pointer;` declaration before the definition for

[PATCH] D157432: [clang][ConstExprEmitter] handle Unary Not on integers

2023-08-08 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added inline comments. Comment at: clang/lib/CodeGen/CGExprConstant.cpp:1402 +return nullptr; + } + A lot of these visitor methods for UnaryOperator are going to look almost the same; I think I might prefer to have a `VisitUnaryOperator`

[PATCH] D157432: [clang][ConstExprEmitter] handle Unary Not on integers

2023-08-08 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers created this revision. Herald added a project: All. nickdesaulniers requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. Consider the following statement: int x = ~0; With the following AST: `-VarDecl 0x5647bdb12d60

[PATCH] D156466: [clang][CGExprConstant] handle implicit widening/narrowing Int-to-Int casts

2023-08-07 Thread Nick Desaulniers via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rGf6267d3b98c1: [clang][CGExprConstant] handle implicit widening/narrowing Int-to-Int casts (authored by nickdesaulniers). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION

[PATCH] D156378: [clang][CGExprConstant] handle unary negation on integrals

2023-08-07 Thread Nick Desaulniers via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rG769333aeeb45: [clang][CGExprConstant] handle unary negation on integrals (authored by nickdesaulniers). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION

[PATCH] D74094: Reapply: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas

2023-08-07 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers updated this revision to Diff 547861. nickdesaulniers added a comment. - remove another auto, sink ArgSlotAlloca to reduce scope Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74094/new/ https://reviews.llvm.org/D74094 Files:

[PATCH] D74094: Reapply: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas

2023-08-07 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. Hi @lei can you please help us retest this version of this patch that previously broke your multistage build? https://reviews.llvm.org/rGfafc6e4fdf3673dcf557d6c8ae0c0a4bb3184402#890444 Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION

[PATCH] D74094: Reapply: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas

2023-08-07 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers updated this revision to Diff 547853. nickdesaulniers added a comment. - remove instance of auto Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74094/new/ https://reviews.llvm.org/D74094 Files: clang/lib/CodeGen/CGCall.cpp

[PATCH] D74094: Reapply: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas

2023-08-07 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers updated this revision to Diff 547846. nickdesaulniers added a comment. This revision is now accepted and ready to land. - fix remaining test failures Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74094/new/

[PATCH] D74094: Reapply: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas

2023-08-04 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers updated this revision to Diff 547271. nickdesaulniers retitled this revision from "[IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas" to "Reapply: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas". nickdesaulniers edited the

[PATCH] D74094: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas

2023-08-04 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. (I am working on rebasing this; tests need updating for opaque ptr) Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74094/new/ https://reviews.llvm.org/D74094 ___

[PATCH] D74094: [IRGen] Emit lifetime intrinsics around temporary aggregate argument allocas

2023-08-03 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. In D74094#4554327 , @foad wrote: > Hi @erik.pilkington, I see this got reverted: > > commit e26c24b849211f35a988d001753e0cd15e4a9d7b > Author: Erik Pilkington > Date: Wed Feb 12 12:02:58 2020 -0800 > >

[PATCH] D156466: [clang][CGExprConstant] handle implicit widening/narrowing Int-to-Int casts

2023-08-02 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers updated this revision to Diff 546646. nickdesaulniers edited the summary of this revision. nickdesaulniers added a comment. - update description Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D156466/new/

[PATCH] D156466: [clang][CGExprConstant] handle implicit widening/narrowing Int-to-Int casts

2023-08-02 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers updated this revision to Diff 546645. nickdesaulniers marked an inline comment as done. nickdesaulniers added a comment. - add test case that would have caught SExt bug - fix SExt bug Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION

[PATCH] D156378: [clang][CGExprConstant] handle unary negation on integrals

2023-08-02 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers updated this revision to Diff 546634. nickdesaulniers marked an inline comment as done. nickdesaulniers added a comment. - prefer VisitUnaryMinus as per @efriedma Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D156378/new/

[PATCH] D76096: [clang] allow const structs/unions/arrays to be constant expressions for C

2023-08-02 Thread Nick Desaulniers 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 rG610ec954e1f8: [clang] allow const structs/unions/arrays to be constant expressions for C (authored by nickdesaulniers). Repository: rG LLVM

[PATCH] D76096: [clang] allow const structs/unions/arrays to be constant expressions for C

2023-08-01 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added inline comments. Comment at: clang/docs/ReleaseNotes.rst:74-76 +- ``structs``, ``unions``, and ``arrays`` that are const may now be used as + constant expressions. This change is more consistent with the behavior of + GCC. Note to self:

[PATCH] D76096: [clang] allow const structs/unions/arrays to be constant expressions for C

2023-07-27 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. In D76096#4537078 , @efriedma wrote: > The idea is to maintain the parallel infrastructure for structs and arrays, > but not for other things. Are you referring specifically to InitListExprs on VarDecls of records

[PATCH] D156482: [clang][CGExprConstant] handle FunctionToPointerDecay

2023-07-27 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers updated this revision to Diff 544909. nickdesaulniers added a comment. - update Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D156482/new/ https://reviews.llvm.org/D156482 Files: clang/lib/CodeGen/CGExprConstant.cpp Index:

[PATCH] D156482: [clang][CGExprConstant] handle FunctionToPointerDecay

2023-07-27 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers created this revision. Herald added a project: All. nickdesaulniers requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. Consider the following code: void foo (void) {} void (*bar)(void) = foo; And the corresponding AST:

[PATCH] D156466: [clang][CGExprConstant] handle implicit widening/narrowing Int-to-Int casts

2023-07-27 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers created this revision. Herald added a project: All. nickdesaulniers requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. Consider the following statements: long x = 1; short y = 1; With the following AST: |-VarDecl

[PATCH] D156378: [clang][CGExprConstant] handle unary negation on integrals

2023-07-26 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers updated this revision to Diff 544538. nickdesaulniers added a comment. - fix oneline class Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D156378/new/ https://reviews.llvm.org/D156378 Files: clang/lib/CodeGen/CGExprConstant.cpp

[PATCH] D156378: [clang][CGExprConstant] handle unary negation on integrals

2023-07-26 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers created this revision. Herald added a project: All. nickdesaulniers requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. Consider the statement: int x = -1; And the following AST: `-VarDecl 0x55c4823a7670 col:5 x 'int'

[PATCH] D156175: [clang][ConstExprEmitter] handle NullToPointer ImplicitCastExpr

2023-07-26 Thread Nick Desaulniers 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 rG2c26397f76d9: [clang][ConstExprEmitter] handle NullToPointer ImplicitCastExpr (authored by nickdesaulniers). Repository: rG LLVM Github Monorepo

[PATCH] D76096: [clang] allow const structs/unions/arrays to be constant expressions for C

2023-07-26 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. In D76096#4533497 , @efriedma wrote: > Basically, I don't want order-of-magnitude compile-time regressions with > large global variables. There are basically two components to that: > > - That the fast path for emitting

[PATCH] D76096: [clang] allow const structs/unions/arrays to be constant expressions for C

2023-07-25 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers updated this revision to Diff 544128. nickdesaulniers added a comment. - rebase for presubmit builders Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D76096/new/ https://reviews.llvm.org/D76096 Files: clang/docs/ReleaseNotes.rst

[PATCH] D156175: [clang][ConstExprEmitter] handle NullToPointer ImplicitCastExpr

2023-07-25 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers updated this revision to Diff 544126. nickdesaulniers added a comment. - rebase Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D156175/new/ https://reviews.llvm.org/D156175 Files: clang/lib/CodeGen/CGExprConstant.cpp Index:

[PATCH] D156185: [clang][ConstExprEmitter] handle ArrayToPointerDecay ImplicitCastExpr of StringLiterals

2023-07-25 Thread Nick Desaulniers 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 rGd1199808afa5: [clang][ConstExprEmitter] handle ArrayToPointerDecay ImplicitCastExpr of… (authored by nickdesaulniers). Changed prior to commit:

[PATCH] D76096: [clang] allow const structs/unions/arrays to be constant expressions for C

2023-07-25 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. what's the "exit criteria" for this patch (https://reviews.llvm.org/D76096)? in https://reviews.llvm.org/D76096#4523828 and https://reviews.llvm.org/D76096#4524003 you mention InitListExpr and StringLiteral. In https://reviews.llvm.org/D156185#4533274 I

[PATCH] D156175: [clang][ConstExprEmitter] handle NullToPointer ImplicitCastExpr

2023-07-25 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added inline comments. Comment at: clang/lib/CodeGen/CGExprConstant.cpp:1131-1132 +case CK_NullToPointer: { + if (llvm::Constant *C = Visit(subExpr, destType)) +if (C->isNullValue()) + return CGM.EmitNullConstant(destType);

[PATCH] D156175: [clang][ConstExprEmitter] handle NullToPointer ImplicitCastExpr

2023-07-25 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers updated this revision to Diff 544113. nickdesaulniers marked 2 inline comments as done. nickdesaulniers added a comment. - remove the check for isNullValue as per @efriedma Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D156175/new/

[PATCH] D156185: [clang][ConstExprEmitter] handle ArrayToPointerDecay ImplicitCastExpr of StringLiterals

2023-07-25 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. In D156185#4533083 , @efriedma wrote: > No, that's taking the address of a string literal lvalue. ah! sorry, yeah `const char* foo = "foo";` vs `char foo[10] = "x";` That AST looks like: `-VarDecl 0x55eaf6075ba8

[PATCH] D156175: [clang][ConstExprEmitter] handle NullToPointer ImplicitCastExpr

2023-07-25 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added inline comments. Comment at: clang/lib/CodeGen/CGExprConstant.cpp:1131-1132 +case CK_NullToPointer: { + if (llvm::Constant *C = Visit(subExpr, destType)) +if (C->isNullValue()) + return CGM.EmitNullConstant(destType);

[PATCH] D156182: [clang][CodeGenModule] remove declaration of GetAddrOfConstantString

2023-07-25 Thread Nick Desaulniers via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rGef103adf60c6: [clang][CodeGenModule] remove declaration of GetAddrOfConstantString (authored by nickdesaulniers). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION

[PATCH] D156154: [clang][ConstExprEmitter] handle IntegerLiterals

2023-07-25 Thread Nick Desaulniers via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rG15a484bf6990: [clang][ConstExprEmitter] handle IntegerLiterals (authored by nickdesaulniers). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D156154/new/

[PATCH] D156185: [clang][ConstExprEmitter] handle ArrayToPointerDecay ImplicitCastExpr of StringLiterals

2023-07-25 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. In D156185#4530163 , @efriedma wrote: >> so if you were concerned with arrays of string literals, we need this patch. > > Ohhh that's not what I meant by StringLiterals. I meant cases where the > string literal is

[PATCH] D156185: [clang][ConstExprEmitter] handle ArrayToPointerDecay ImplicitCastExpr of StringLiterals

2023-07-24 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. For this case in this patch in particular: extern const char* bar; const char* foo [] = { "hello", "goodbye", bar }; TranslationUnitDecl |-VarDecl col:20 used bar 'const char *' extern `-VarDecl line:2:13 foo 'const char *[3]'

[PATCH] D156185: [clang][ConstExprEmitter] handle ArrayToPointerDecay ImplicitCastExpr of StringLiterals

2023-07-24 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. In D156185#4530117 , @efriedma wrote: > We can do a whole bunch of these, but at some point we hit diminishing > returns... bailing out here isn't *that* expensive. Do you have some idea > how far you want to go with

[PATCH] D156185: [clang][ConstExprEmitter] handle ArrayToPointerDecay ImplicitCastExpr of StringLiterals

2023-07-24 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers created this revision. Herald added a project: All. nickdesaulniers requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. Consider the following statement: const char* foo = "foo"; For the sub-AST: `-ImplicitCastExpr

[PATCH] D156182: [clang][CodeGenModule] remove declaration of GetAddrOfConstantString

2023-07-24 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers created this revision. Herald added a project: All. nickdesaulniers requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. It looks like the definition was removed in cd21d541397e but the declaration was not. Surprisingly (to

[PATCH] D156175: [clang][ConstExprEmitter] handle NullToPointer ImplicitCastExpr

2023-07-24 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added inline comments. Comment at: clang/lib/CodeGen/CGExprConstant.cpp:1131-1132 +case CK_NullToPointer: { + if (llvm::Constant *C = Visit(subExpr, destType)) +if (C->isNullValue()) + return CGM.EmitNullConstant(destType);

[PATCH] D156154: [clang][ConstExprEmitter] handle IntegerLiterals

2023-07-24 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. In D156154#4529889 , @shafik wrote: > What practical effects will this have? As of D151587 ... From the commit message `Improves the ability of ConstExprEmitter to evaluate constants.`

[PATCH] D156175: [clang][ConstExprEmitter] handle NullToPointer ImplicitCastExpr

2023-07-24 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers created this revision. Herald added a subscriber: inglorion. Herald added a project: All. nickdesaulniers requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. Consider the following statement: void* foo = ((void *)0); For

[PATCH] D151587: [clang][ConstantEmitter] have tryEmitPrivate[ForVarInit] try ConstExprEmitter fast-path first

2023-07-24 Thread Nick Desaulniers 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 rGb54294e2c959: [clang][ConstantEmitter] have tryEmitPrivate[ForVarInit] try ConstExprEmitter… (authored by nickdesaulniers). Repository: rG LLVM

[PATCH] D76096: [clang] allow const structs/unions/arrays to be constant expressions for C

2023-07-24 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. Posting quick benchmarks of linux kernel builds: ac524886094db58112ca176e1d727330a94634a8 + D151587 + D76096 + D156154

[PATCH] D156154: [clang][ConstExprEmitter] handle IntegerLiterals

2023-07-24 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers updated this revision to Diff 543665. nickdesaulniers retitled this revision from "[clang][ConstExprEmitter] handle IntegerLiterals and IntegralCasts" to "[clang][ConstExprEmitter] handle IntegerLiterals". nickdesaulniers added a comment. - remove mention of IntegralCasts from

[PATCH] D156154: [clang][ConstExprEmitter] handle IntegerLiterals and IntegralCasts

2023-07-24 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers updated this revision to Diff 543662. nickdesaulniers marked an inline comment as done. nickdesaulniers added a comment. - put back the IntegralCast, for now Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D156154/new/

[PATCH] D156154: [clang][ConstExprEmitter] handle IntegerLiterals and IntegralCasts

2023-07-24 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. In D156154#4529265 , @efriedma wrote: > As a practical matter, I'm not sure this helps much; ExprConstant should be > reasonably fast for simple integers. The performance issues only really show > for structs/arrays.

[PATCH] D156154: [clang][ConstExprEmitter] handle IntegerLiterals and IntegralCasts

2023-07-24 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers created this revision. Herald added a project: All. nickdesaulniers requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. Improves the ability of ConstExprEmitter to evaluate constants. Found by adding asserts to

[PATCH] D76096: [clang] allow const structs/unions/arrays to be constant expressions for C

2023-07-21 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. In D76096#4524092 , @nickdesaulniers wrote: > In D76096#4524003 , @efriedma wrote: > >> The ones most likely to be a concern are InitListExpr and StringLiteral. > > Here's a

[PATCH] D76096: [clang] allow const structs/unions/arrays to be constant expressions for C

2023-07-21 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. In D76096#4524003 , @efriedma wrote: > The ones most likely to be a concern are InitListExpr and StringLiteral. Here's a reduced instance from the Linux kernel: struct timespec64 { long tv_sec; long tv_nsec;

[PATCH] D76096: [clang] allow const structs/unions/arrays to be constant expressions for C

2023-07-21 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. In D76096#4523828 , @efriedma wrote: > The idea would be looking for places we EvaluateAsRValue an array or struct. > Not sure what that stack trace represents. Perhaps you mean calling `EvaluateAsRValue` with a

[PATCH] D76096: [clang] allow const structs/unions/arrays to be constant expressions for C

2023-07-21 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. In D76096#4523750 , @nickdesaulniers wrote: > In D76096#4523718 , @efriedma wrote: > >> My primary concern here is making sure we don't actually blow up >> compile-time. D151587

[PATCH] D76096: [clang] allow const structs/unions/arrays to be constant expressions for C

2023-07-21 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers updated this revision to Diff 543051. nickdesaulniers added a comment. - use better identifiers in test - remove half baked comment from test Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D76096/new/ https://reviews.llvm.org/D76096

[PATCH] D76096: [clang] allow const structs/unions/arrays to be constant expressions for C

2023-07-21 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment. In D76096#4523718 , @efriedma wrote: > My primary concern here is making sure we don't actually blow up > compile-time. D151587 fixes the > dependency from CGExprConstant, which was

[PATCH] D76096: [clang] allow const structs/unions/arrays to be constant expressions for C

2023-07-21 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers updated this revision to Diff 543048. nickdesaulniers retitled this revision from "[clang] allow const structs to be constant expressions for C" to "[clang] allow const structs/unions/arrays to be constant expressions for C". nickdesaulniers added a comment. - add moar tests for

[PATCH] D151587: [clang][ConstantEmitter] have tryEmitPrivate[ForVarInit] try ConstExprEmitter fast-path first

2023-07-21 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers updated this revision to Diff 543036. nickdesaulniers added a comment. - go back to Eli's sad (and boring) old way of doing things^U:wq Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D151587/new/ https://reviews.llvm.org/D151587

[PATCH] D151587: [clang][ConstantEmitter] have tryEmitPrivate[ForVarInit] try ConstExprEmitter fast-path first

2023-07-21 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added inline comments. Comment at: clang/lib/AST/Expr.cpp:3444 if (CE->getCastKind() == CK_NoOp || CE->getCastKind() == CK_LValueToRValue || CE->getCastKind() == CK_ToUnion || efriedma wrote: > nickdesaulniers wrote: > >

  1   2   3   4   5   6   7   8   9   10   >