[clang] [Attributes] Support Attributes being declared as supporting an experimental late parsing mode "extension" (PR #88596)
delcypher wrote: @erichkeane Thanks for approving. I'll rebase, check this builds and then land this. @AaronBallman When you're back please let me know if there's any follow up changes you want. https://github.com/llvm/llvm-project/pull/88596 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Attributes] Support Attributes being declared as supporting an experimental late parsing mode "extension" (PR #88596)
) { -if (I.variety() != "GNU") - continue; -OS << ".Case(\"" << I.name() << "\", " << LateParsed << ")\n"; - } +// FIXME: Handle non-GNU attributes +for (const auto : Spellings) { + if (I.variety() != "GNU") +continue; + OS << ".Case(\"" << I.name() << "\", 1)\n"; } } +} + +static void emitClangAttrLateParsedList(RecordKeeper , +raw_ostream ) { + OS << "#if defined(CLANG_ATTR_LATE_PARSED_LIST)\n"; + emitClangAttrLateParsedListImpl(Records, OS, LateAttrParseKind::Standard); OS << "#endif // CLANG_ATTR_LATE_PARSED_LIST\n\n"; } +static void emitClangAttrLateParsedExperimentalList(RecordKeeper , +raw_ostream ) { + OS << "#if defined(CLANG_ATTR_LATE_PARSED_EXPERIMENTAL_EXT_LIST)\n"; + emitClangAttrLateParsedListImpl(Records, OS, + LateAttrParseKind::ExperimentalExt); + OS << "#endif // CLANG_ATTR_LATE_PARSED_EXPERIMENTAL_EXT_LIST\n\n"; +} + static bool hasGNUorCXX11Spelling(const Record ) { std::vector Spellings = GetFlattenedSpellings(Attribute); for (const auto : Spellings) { @@ -2101,9 +2174,21 @@ bool PragmaClangAttributeSupport::isAttributedSupported( return SpecifiedResult; // Opt-out rules: - // An attribute requires delayed parsing (LateParsed is on) - if (Attribute.getValueAsBit("LateParsed")) + + // An attribute requires delayed parsing (LateParsed is on). + switch (getLateAttrParseKind()) { + case LateAttrParseKind::Never: +break; + case LateAttrParseKind::Standard: +return false; + case LateAttrParseKind::ExperimentalExt: +// This is only late parsed in certain parsing contexts when +// `LangOpts.ExperimentalLateParseAttributes` is true. Information about the +// parsing context and `LangOpts` is not available in this method so just +// opt this attribute out. return false; + } + // An attribute has no GNU/CXX11 spelling if (!hasGNUorCXX11Spelling(Attribute)) return false; @@ -2885,8 +2970,27 @@ static void emitAttributes(RecordKeeper , raw_ostream , return; } OS << "\n : " << SuperName << "(Ctx, CommonInfo, "; - OS << "attr::" << R.getName() << ", " - << (R.getValueAsBit("LateParsed") ? "true" : "false"); + OS << "attr::" << R.getName() << ", "; + + // Handle different late parsing modes. + OS << "/*IsLateParsed=*/"; + switch (getLateAttrParseKind()) { + case LateAttrParseKind::Never: +OS << "false"; +break; + case LateAttrParseKind::ExperimentalExt: +// Currently no clients need to know the distinction between `Standard` +// and `ExperimentalExt` so treat `ExperimentalExt` just like +// `Standard` for now. + case LateAttrParseKind::Standard: +// Note: This is misleading. `IsLateParsed` doesn't mean the +// attribute was actually late parsed. Instead it means the attribute in +// `Attr.td` is marked as being late parsed. Maybe it should be called +// `IsLateParseable`? +OS << "true"; +break; + } + if (Inheritable) { OS << ", " << (R.getValueAsBit("InheritEvenIfAlreadyPresent") ? "true" @@ -4843,6 +4947,7 @@ void EmitClangAttrParserStringSwitches(RecordKeeper , raw_ostream ) { emitClangAttrAcceptsExprPack(Records, OS); emitClangAttrTypeArgList(Records, OS); emitClangAttrLateParsedList(Records, OS); + emitClangAttrLateParsedExperimentalList(Records, OS); } void EmitClangAttrSubjectMatchRulesParserStringSwitches(RecordKeeper , ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [BoundsSafety] WIP: Make 'counted_by' work for pointer fields; late parsing for 'counted_by' on decl attr position (PR #87596)
https://github.com/delcypher updated https://github.com/llvm/llvm-project/pull/87596 >From b859cf056df24daa85f3fd305ef56f32e0f266ed Mon Sep 17 00:00:00 2001 From: Dan Liew Date: Fri, 12 Apr 2024 17:36:19 -0700 Subject: [PATCH 1/4] [Attributes] Support Attributes being declared as supporting an experimental late parsing mode "extension" This patch changes the `LateParsed` field of `Attr` in `Attr.td` to be an instantiation of the new `LateAttrParseKind` class. The instation can be one of the following: * `LateAttrParsingNever` - Corresponds with the false value of `LateParsed` prior to this patch (the default for an attribute). * `LateAttrParseStandard` - Corresponds with the true value of `LateParsed` prior to this patch. * `LateAttrParseExperimentalExt` - A new mode described below. `LateAttrParseExperimentalExt` is an experimental extension to `LateAttrParseStandard`. Essentially this allows `Parser::ParseGNUAttributes(...)` to distinguish between these cases: 1. Only `LateAttrParseExperimentalExt` attributes should be late parsed. 2. Both `LateAttrParseExperimentalExt` and `LateAttrParseStandard` attributes should be late parsed. Callers (and indirect callers) of `Parser::ParseGNUAttributes(...)` indicate the desired behavior by setting a flag in the `LateParsedAttrList` object that is passed to the function. In addition to the above, a new driver and frontend flag (`-fexperimental-late-parse-attributes`) with a corresponding LangOpt (`ExperimentalLateParseAttributes`) is added that changes how `LateAttrParseExperimentalExt` attributes are parsed. * When the flag is disabled (default), in cases where only `LateAttrParsingExperimentalOnly` late parsing is requested, the attribute will be parsed immediately (i.e. **NOT** late parsed). This allows the attribute to act just like a `LateAttrParseStandard` attribute when the flag is disabled. * When the flag is enabled, in cases where only `LateAttrParsingExperimentalOnly` late parsing is requested, the attribute will be late parsed. The motivation behind this change is to allow the new `counted_by` attribute (part of `-fbounds-safety`) to support late parsing but **only** when `-fexperimental-late-parse-attributes` is enabled. This attribute needs to support late parsing to allow it to refer to fields later in a struct definition (or function parameters declared later). However, there isn't a precedent for supporting late attribute parsing in C so this flag allows the new behavior to exist in Clang but not be on by default. This behavior was requested as part of the `-fbounds-safety` RFC process (https://discourse.llvm.org/t/rfc-enforcing-bounds-safety-in-c-fbounds-safety/70854/68). This patch doesn't introduce any uses of `LateAttrParseExperimentalExt`. This will be added for the `counted_by` attribute in a future patch (https://github.com/llvm/llvm-project/pull/87596). A consequence is the new behavior added in this patch is not yet testable. Hence, the lack of tests covering the new behavior. rdar://125400257 --- clang/include/clang/Basic/Attr.td | 78 +++--- clang/include/clang/Basic/LangOptions.def | 1 + clang/include/clang/Driver/Options.td | 7 + clang/include/clang/Parse/Parser.h| 15 +- clang/lib/Driver/ToolChains/Clang.cpp | 3 + clang/lib/Parse/ParseDecl.cpp | 42 +- .../experimental-late-parse-attributes.c | 12 ++ clang/utils/TableGen/ClangAttrEmitter.cpp | 136 +++--- 8 files changed, 251 insertions(+), 43 deletions(-) create mode 100644 clang/test/Driver/experimental-late-parse-attributes.c diff --git a/clang/include/clang/Basic/Attr.td b/clang/include/clang/Basic/Attr.td index dc87a8c6f022dc..0df80118286c89 100644 --- a/clang/include/clang/Basic/Attr.td +++ b/clang/include/clang/Basic/Attr.td @@ -592,6 +592,48 @@ class AttrSubjectMatcherAggregateRule { def SubjectMatcherForNamed : AttrSubjectMatcherAggregateRule; +// Late Attribute parsing mode enum +class LateAttrParseKind { + int Kind = val; +} + +// Never late parsed +def LateAttrParseNever : LateAttrParseKind<0>; + +// Standard late attribute parsing +// +// This is language dependent. For example: +// +// * For C++ enables late parsing of a declaration attributes +// * For C does not enable late parsing of attributes +// +def LateAttrParseStandard: LateAttrParseKind<1>; + +// Experimental extension to standard late attribute parsing +// +// This extension behaves like `LateAttrParseStandard` but allows +// late parsing attributes in more contexts. +// +// In contexts where `LateAttrParseStandard` attributes are late +// parsed, `LateAttrParseExperimentalExt` attributes will also +// be late parsed. +// +// In contexts that only late parse `LateAttrParseExperimentalExt` attributes +// (see `LateParsedAttrList::lateAttrParseExperimentalExtOnly()`) +// +// * If `-fexperimental-late-parse-attributes` +//
[clang] [llvm] [x86] Add tan intrinsic part 4 (PR #90503)
@@ -654,6 +655,7 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine , setOperationAction(ISD::FSIN , VT, Expand); setOperationAction(ISD::FCOS , VT, Expand); setOperationAction(ISD::FSINCOS, VT, Expand); + setOperationAction(ISD::FTAN, VT, Expand); topperc wrote: I want to tell you to match the existing code that uses extra spaces to keep things in columns, but I guess clang-format will complain. https://github.com/llvm/llvm-project/pull/90503 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [Clang] Implement P2809: Trivial infinite loops are not Undefined Behavior (PR #90066)
yronglin wrote: I'd like to add the test case from the paper: ``` #include int main() { while (true) ; } void unreachable() { std::cout << "Hello world!" << std::endl; } ``` https://github.com/llvm/llvm-project/pull/90066 _______ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] Implement resource binding type prefix mismatch errors (PR #87578)
@@ -44,7 +44,7 @@ void foo2() { // expected-warning@+1 {{'register' attribute only applies to cbuffer/tbuffer and external global variables}} extern RWBuffer U2 : register(u5); } -// FIXME: expect-error once fix https://github.com/llvm/llvm-project/issues/57886. +// expected-error@+1 {{invalid register name prefix 'u' for 'float' (expected 't')}} tex3d wrote: We should consider deprecating the register binding of this style: `float b : register(c0);`, since it's not supported by DXC, and was only supported by FXC for DX9 targets. Register binding should only be applicable to global resource/sampler declarations and cbuffer/tbuffer declarations. So the answer to "what prefix should that be" is: we don't support register bindings on values that go into the constant buffer, so there is no valid prefix to use here. The closest equivalent to these legacy register bindings that we do support are `packoffset` annotations. https://github.com/llvm/llvm-project/pull/87578 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [x86] Add tan intrinsic part 4 (PR #90503)
@@ -674,6 +674,9 @@ # DEBUG-NEXT: .. opcode {{[0-9]+}} is aliased to {{[0-9]+}} # DEBUG-NEXT: .. the first uncovered type index: 1, OK # DEBUG-NEXT: .. the first uncovered imm index: 0, OK +# DEBUG-NEXT: G_FTAN (opcode {{[0-9]+}}): 1 type index, 0 imm indices farzonl wrote: I know. There is no way to do a `G_FTAN` that isn't exposed across all backends. https://github.com/llvm/llvm-project/pull/90503 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[Qemu-commits] [qemu/qemu] 498432: target/i386/cpu: Remove "x86" prefix from the CPU ...
Branch: refs/heads/staging Home: https://github.com/qemu/qemu Commit: 49843214368eccbc46ad3946aae8cc81eaced98e https://github.com/qemu/qemu/commit/49843214368eccbc46ad3946aae8cc81eaced98e Author: Thomas Huth Date: 2024-04-29 (Mon, 29 Apr 2024) Changed paths: M target/i386/cpu.c Log Message: --- target/i386/cpu: Remove "x86" prefix from the CPU list Printing an "x86" in front of each CPU name is not helpful at all: It is confusing for the users since they don't know whether they have to specify these letters for the "-cpu" parameter, too, and it also takes some precious space in the dense output of the CPU entries. Let's simply remove this now and use two spaces at the beginning of the lines for the indentation of the entries instead, like most other target architectures are doing it for their CPU help output already. Signed-off-by: Thomas Huth Reviewed-by: Richard Henderson Reviewed-by: Michael Tokarev Signed-off-by: Michael Tokarev Commit: 7febce361da200fa71e71e40316e4a6d2a5b40ab https://github.com/qemu/qemu/commit/7febce361da200fa71e71e40316e4a6d2a5b40ab Author: Thomas Huth Date: 2024-04-29 (Mon, 29 Apr 2024) Changed paths: M target/s390x/cpu_models.c Log Message: --- target/s390x/cpu_models: Rework the output of "-cpu help" Printing an "s390x" in front of each CPU name is not helpful at all: It is confusing for the users since they don't know whether they have to specify these letters for the "-cpu" parameter, too, and it also takes some precious space in the dense output of the CPU entries. Let's simply remove this now! While we're at it, use two spaces at the beginning of the lines for the indentation of the entries, and add a "Available CPUs" in the very first line, like most other target architectures are doing it for their "-cpu help" output already. Signed-off-by: Thomas Huth Reviewed-by: Richard Henderson Reviewed-by: Michael Tokarev Signed-off-by: Michael Tokarev Commit: 5b638f6e900efd1d5f5d0697af69a0e9eb2bfc72 https://github.com/qemu/qemu/commit/5b638f6e900efd1d5f5d0697af69a0e9eb2bfc72 Author: Thomas Huth Date: 2024-04-29 (Mon, 29 Apr 2024) Changed paths: M target/ppc/cpu_init.c Log Message: --- target/ppc/cpu_init: Remove "PowerPC" prefix from the CPU list Printing a "PowerPC" in front of each CPU name is not helpful at all: It is confusing for the users since they don't know whether they have to specify these letters for the "-cpu" parameter, too, and it also takes some precious space in the dense output of the CPU entries. Let's simply remove this now and use two spaces at the beginning of the lines for the indentation of the entries instead, and add a "Available CPUs" in the very first line, like most other target architectures are doing it for their CPU help output already. Signed-off-by: Thomas Huth Reviewed-by: Richard Henderson Reviewed-by: Michael Tokarev Signed-off-by: Michael Tokarev Commit: e3812d109663b8fee28e9334bbc12f684355984e https://github.com/qemu/qemu/commit/e3812d109663b8fee28e9334bbc12f684355984e Author: Philippe Mathieu-Daudé Date: 2024-04-29 (Mon, 29 Apr 2024) Changed paths: M scripts/checkpatch.pl Log Message: --- scripts/checkpatch: Avoid author email mangled by qemu-*@nongnu.org Commit f5177798d8 ("scripts: report on author emails that are mangled by the mailing list") added a check for qemu-devel@ list, extend the regexp to cover more such qemu-trivial@, qemu-block@ and qemu-ppc@. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Michael Tokarev Signed-off-by: Michael Tokarev Commit: af692fd338154a20010c78a6bd9acb2c889dd4e7 https://github.com/qemu/qemu/commit/af692fd338154a20010c78a6bd9acb2c889dd4e7 Author: Philippe Mathieu-Daudé Date: 2024-04-29 (Mon, 29 Apr 2024) Changed paths: M scripts/checkpatch.pl Log Message: --- scripts/checkpatch: Do not use mailmap The .mailmap file fixes mistake we already did. Do not use it when running checkpatch.pl, otherwise we might commit the very same mistakes. Reported-by: Peter Maydell Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Michael Tokarev Signed-off-by: Michael Tokarev Commit: 06479dbf3d7d245572c4b3016e5a1d923ff04d66 https://github.com/qemu/qemu/commit/06479dbf3d7d245572c4b3016e5a1d923ff04d66 Author: Li Zhijian Date: 2024-04-29 (Mon, 29 Apr 2024) Changed paths: M backends/cryptodev-builtin.c Log Message: --- backends/cryptodev-builtin: Fix local_error leaks It seems that this error does not need to be propagated to the upper, directly output the error to avoid the leaks Closes: https://gitlab.com/qemu-project/qemu/-/issues/2283 Fixes: 2fda101de07 ("virtio-crypto: Support asynchronous mode") Signed-off-by: Li Zhijian Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: zhenwei pi Reviewed-by: Michael Tokarev Signed-off-by: Michael Tokarev
[llvm-branch-commits] [flang] [flang][cuda] Lower device/managed/unified allocation to cuda ops (PR #90526)
vzakhari wrote: Thank you, Valentin! Is it expected that we can have a mix of `fir.alloca` and `fir.cuda_alloc` operations in the device routines (e.g. I suppose `fir::FirOpBuilder::createTemporaryAlloc` can generate `fir.alloca` for a temporary location in device code)? It is not necessarily an issue, I just want to understand whether we will have to handle both operations in the device code. https://github.com/llvm/llvm-project/pull/90526 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] [clang][CallGraphSection] Add type id metadata to indirect call and targets (PR #87573)
@@ -6003,6 +6003,11 @@ RValue CodeGenFunction::EmitCall(QualType CalleeType, const CGCallee } } + // Set type identifier metadata of indirect calls for call graph section. + if (CGM.getCodeGenOpts().CallGraphSection && CallOrInvoke && + CallOrInvoke->isIndirectCall()) ilovepi wrote: Is `CallOrInvoke` in scope? it appears to be defined in the block above. If its shadowing, maybe we want to change that or make sure we don't want the shadowed value (e.g. the now out of scope def from line 5990. https://github.com/llvm/llvm-project/pull/87573 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] [clang][CallGraphSection] Add type id metadata to indirect call and targets (PR #87573)
@@ -5687,6 +5688,39 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo , AllocAlignAttrEmitter AllocAlignAttrEmitter(*this, TargetDecl, CallArgs); Attrs = AllocAlignAttrEmitter.TryEmitAsCallSiteAttribute(Attrs); + if (CGM.getCodeGenOpts().CallGraphSection) { +// FIXME: create operand bundle only for indirect calls, not for all ilovepi wrote: Is this something you're planning to address in future patches? Or is this a limitation? https://github.com/llvm/llvm-project/pull/87573 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] [clang][CallGraphSection] Add type id metadata to indirect call and targets (PR #87573)
https://github.com/ilovepi requested changes to this pull request. Can you split out the LLVM parts from the clang parts? The LLVM bits should land first, and then clang can make use of them in a later PR. This will also simplify review, since we can focus on the LLVM vs. Clang implementations in isolation. https://github.com/llvm/llvm-project/pull/87573 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] [clang][CallGraphSection] Add type id metadata to indirect call and targets (PR #87573)
@@ -5687,6 +5688,39 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo , AllocAlignAttrEmitter AllocAlignAttrEmitter(*this, TargetDecl, CallArgs); Attrs = AllocAlignAttrEmitter.TryEmitAsCallSiteAttribute(Attrs); + if (CGM.getCodeGenOpts().CallGraphSection) { +// FIXME: create operand bundle only for indirect calls, not for all + +assert((TargetDecl && TargetDecl->getFunctionType() || +Callee.getAbstractInfo().getCalleeFunctionProtoType()) && + "cannot find callsite type"); + +QualType CST; +if (TargetDecl && TargetDecl->getFunctionType()) + CST = QualType(TargetDecl->getFunctionType(), 0); +else if (const auto *FPT = + Callee.getAbstractInfo().getCalleeFunctionProtoType()) + CST = QualType(FPT, 0); + +if (!CST.isNull()) { + auto *TypeIdMD = CGM.CreateMetadataIdentifierGeneralized(CST); + auto *TypeIdMDVal = + llvm::MetadataAsValue::get(getLLVMContext(), TypeIdMD); + BundleList.emplace_back("type", TypeIdMDVal); +} + +// Set type identifier metadata of indirect calls for call graph section. +if (callOrInvoke && *callOrInvoke && (*callOrInvoke)->isIndirectCall()) { + if (const FunctionDecl *FD = dyn_cast_or_null(TargetDecl)) { +// Type id metadata is set only for C/C++ contexts. +if (isa(FD) || isa(FD) || +isa(FD)) { ilovepi wrote: I know this is a one off set of checks, but maybe it would be easier to follow if it were a helper? https://github.com/llvm/llvm-project/pull/87573 _______ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] [clang][CallGraphSection] Add type id metadata to indirect call and targets (PR #87573)
https://github.com/ilovepi edited https://github.com/llvm/llvm-project/pull/87573 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[clang] [llvm] Implement resource binding type prefix mismatch errors (PR #87578)
@@ -44,7 +44,7 @@ void foo2() { // expected-warning@+1 {{'register' attribute only applies to cbuffer/tbuffer and external global variables}} extern RWBuffer U2 : register(u5); } -// FIXME: expect-error once fix https://github.com/llvm/llvm-project/issues/57886. +// expected-error@+1 {{invalid register name prefix 'u' for 'float' (expected 't')}} bob80905 wrote: According to @tex3d 's comment, the ` expected 'b', 'c', or 'i' binding` is no longer supported, so I don't think I should weave that into this implementation. I did ask what we should expect the prefix to be, but I haven't received an answer yet. Sounds to me like you think it should be 'b', because it's a constant inside a CBuffer? https://github.com/llvm/llvm-project/pull/87578 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[llvm-branch-commits] [RISCV] Remove hasSideEffects=1 for saturating/fault-only-first instructions (PR #90049)
https://github.com/topperc approved this pull request. LGTM https://github.com/llvm/llvm-project/pull/90049 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[clang] [Clang][objectsize] Generate object size calculation for sub-objects (PR #86858)
bwendling wrote: Another ping... https://github.com/llvm/llvm-project/pull/86858 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[Qemu-commits] [qemu/qemu] 035551: net/slirp: Use newer slirp_*_hostxfwd API
Branch: refs/heads/master Home: https://github.com/qemu/qemu Commit: 03555199b63aa1fbce24d16287e141c33f572a24 https://github.com/qemu/qemu/commit/03555199b63aa1fbce24d16287e141c33f572a24 Author: Nicholas Ngai Date: 2024-04-29 (Mon, 29 Apr 2024) Changed paths: M net/slirp.c Log Message: --- net/slirp: Use newer slirp_*_hostxfwd API libslirp provides a newer slirp_*_hostxfwd API meant for address-agnostic forwarding instead of the is_udp parameter which is limited to just TCP/UDP. This paves the way for IPv6 and Unix socket support. Signed-off-by: Nicholas Ngai Signed-off-by: Samuel Thibault Tested-by: Breno Leitao Message-Id: <20210925214820.18078-1-nicho...@ngai.me> Commit: 5fee33d97a7f2e95716417bd164f2f5264acd976 https://github.com/qemu/qemu/commit/5fee33d97a7f2e95716417bd164f2f5264acd976 Author: Richard Henderson Date: 2024-04-29 (Mon, 29 Apr 2024) Changed paths: M net/slirp.c Log Message: --- Merge tag 'samuel-thibault' of https://people.debian.org/~sthibault/qemu into staging slirp: Use newer slirp_*_hostxfwd API Nicholas Ngai (1): net/slirp: Use newer slirp_*_hostxfwd API # -BEGIN PGP SIGNATURE- # # iQIzBAABCgAdFiEEqpLrvfAUiqYaQ7iu5IlMrEVBS7AFAmYu5OgACgkQ5IlMrEVB # S7DGOQ//cnW2fiXnj+ijmQ4+h8Yj2vCtGZ9+7D74Q6KSbY0AkYVhRm+qWJA1XJrR # Y7JvetqKGCxhol24x0aopDvcybIDU/EqFrxhmZY+dJhZWxfsvYpLGJ5TfulRA1gy # PSDYQi6LlwDJyQT08po2TLA0zSOmxycdrA8mTJuf8UHDiXnwcy9WjDFF1tCrGoN4 # LgvsUUpQ6y9fZQxbFyPFwtHkUeREvfhRPT0c5lNsF0Cot8uXt5YOyCc0XKjX1d0F # ucuCwv65gsIdcaDHcHIYhyKZX3lfAXAAaDe9njvISYcyOlyXOZS9df3tuMTeEW8S # wuN10WuQHI7mpLS/IomnmYxb16lyhhwLC9kmNVZt6jGfTYB/xHUeXb9gIsdkc05s # Cxy+VdxgnzGji6dOwufI8/ufWSti1PRB1yhZsmJtLC7MDOv5EJkxrmRXhWkr6LYZ # CU52uT7CsOTKdmmwdjTUqkfswB70Js68J33Rbm3VWJlnSBAQ/ioGt50r7tqFBwT8 # HQc4CqYBT58BPb7rKrUa6dCy1uAprYl2juU3vl/nHcp2zIxIar1yzQK3OG+3h6fZ # Mrg/C5l4WiEKFgdl5sMj1xJK15aC42/UyzxUFM12usKaOtKjQAIkjx6U7HCjwfdR # BZmxTx2u7jGm9a0R3qhVhZjmIIbfLoeEHepLMOAHN+TGAl0bcxc= # =22cZ # -END PGP SIGNATURE- # gpg: Signature made Sun 28 Apr 2024 05:08:08 PM PDT # gpg:using RSA key AA92EBBDF0148AA61A43B8AEE4894CAC45414BB0 # gpg: Good signature from "Samuel Thibault " [undefined] # gpg: aka "Samuel Thibault " [undefined] # gpg: aka "Samuel Thibault " [unknown] # gpg: aka "Samuel Thibault " [undefined] # gpg: aka "Samuel Thibault " [undefined] # gpg: aka "Samuel Thibault " [unknown] # gpg: aka "Samuel Thibault " [unknown] # gpg: aka "Samuel Thibault " [unknown] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 900C B024 B679 31D4 0F82 304B D017 8C76 7D06 9EE6 # Subkey fingerprint: AA92 EBBD F014 8AA6 1A43 B8AE E489 4CAC 4541 4BB0 * tag 'samuel-thibault' of https://people.debian.org/~sthibault/qemu: net/slirp: Use newer slirp_*_hostxfwd API Signed-off-by: Richard Henderson Compare: https://github.com/qemu/qemu/compare/fd87be1dada5...5fee33d97a7f To unsubscribe from these emails, change your notification settings at https://github.com/qemu/qemu/settings/notifications
[llvm-branch-commits] [RISCV] Remove hasSideEffects=1 for saturating/fault-only-first instructions (PR #90049)
@@ -194,15 +194,12 @@ define void @vpmerge_vpload_store( %passthru, ptr %p, , i64 } @llvm.riscv.vleff.nxv2i32(, ptr, i64) define @vpmerge_vleff( %passthru, ptr %p, %m, i32 zeroext %vl) { ; CHECK-LABEL: vpmerge_vleff: ; CHECK: # %bb.0: -; CHECK-NEXT:vsetvli zero, a1, e32, m1, ta, ma -; CHECK-NEXT:vle32ff.v v9, (a0) -; CHECK-NEXT:vsetvli zero, a1, e32, m1, tu, ma -; CHECK-NEXT:vmerge.vvm v8, v8, v9, v0 +; CHECK-NEXT:vsetvli zero, a1, e32, m1, tu, mu +; CHECK-NEXT:vle32ff.v v8, (a0), v0.t topperc wrote: I'm trying to decide if this is correct. It's certainly a weird test case. You would normally want the vp.merge to use vl produced by vleff. If the VL gets trimmed by the vleff, the elements between the input VL and the trimmed VL are undefined if the mask bit for those elements are non-zero. The spec allows hardware to write the active elements past the trimmed VL to any value. I think we're ok here. If vleff trims any elements they would be undefined in `%b`. The vp.merge would propagate them if the mask bit is non-zero. If the mask is 0 the vp.merge would replace them with passthru. That seems to be what the combined vp.merge would do. https://github.com/llvm/llvm-project/pull/90049 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [GSYM] Include end_sequence debug_line rows in Dwarf transform (PR #90535)
avillega wrote: I think I can accomplish the same behaviour exposed in https://github.com/llvm/llvm-project/pull/89703 which requires a change to the DWARF apis without actually changing them. https://github.com/llvm/llvm-project/pull/90535 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [GSYM] Include end_sequence debug_line rows in Dwarf transform (PR #90535)
STT_FUNC +Section: .text +Value: 0x16B0 +Size:0x47 + - Name:__do_init.__initialized +Type:STT_OBJECT +Section: .bss +Value: 0x3A28 +Size:0x1 + - Name:__EH_FRAME_LIST__ +Type:STT_OBJECT +Section: .eh_frame +Value: 0x5B0 + - Name:__do_init.__object +Type:STT_OBJECT +Section: .bss +Value: 0x3A30 +Size:0x40 + - Name:__do_fini +Type:STT_FUNC +Section: .text +Value: 0x1700 +Size:0x61 + - Name:__do_fini.__finalized +Type:STT_OBJECT +Section: .bss +Value: 0x3A70 +Size:0x1 + - Name:__init +Type:STT_OBJECT +Section: .init_array +Value: 0x2810 +Size:0x8 + - Name:__fini +Type:STT_OBJECT +Section: .fini_array +Value: 0x2818 +Size:0x8 + - Name:__d... [truncated] `` https://github.com/llvm/llvm-project/pull/90535 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [GSYM] Include end_sequence debug_line rows in Dwarf transform (PR #90535)
https://github.com/avillega created https://github.com/llvm/llvm-project/pull/90535 Work around for #46494. This change adds debug_line end_sequence rows when converting the function line tables. By including the end_sequence it is possible to handle some edge cases like icf optimizations. ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[clang] [clang] Implement CWG2851: floating-point conversions in converted constant expressions (PR #90387)
@@ -67,6 +68,69 @@ void B::g() requires true; } // namespace cwg2847 +namespace cwg2851 { // cwg2851: 19 + +#if __cplusplus >= 202002L +template struct Val { static constexpr T value = v; }; + + +// Floating-point promotions + +static_assert(Val::value == 0.0L); +static_assert(Val::value == 0.0L); +static_assert(Val::value == 0.0); +static_assert(Val::value == -0.0L); + +static_assert(!__is_same(Val, Val)); +static_assert(__is_same(Val, Val)); + +static_assert(__is_same(Val, Val)); + +static_assert(__is_same(Val, Val(__builtin_nanf(""))>)); +static_assert(__is_same(Val, Val(__builtin_nansf(""))>)); +static_assert(__is_same(Val, Val(__builtin_nanf("0x1"))>)); +static_assert(__is_same(Val, Val(__builtin_nansf("0x1"))>)); + + +// Floating-point conversions where the source value can be represented exactly in the destination type + +static_assert(Val::value == 0.0L); +static_assert(__is_same(Val, Val)); +static_assert(__is_same(Val, Val)); +static_assert(!__is_same(Val, Val)); +static_assert(__is_same(Val, Val)); +static_assert(__is_same(Val, Val)); + +static_assert(__is_same(Val, Val)); +Val _1; +// since-cxx20-error-re@-1 {{non-type template argument evaluates to {{.+}} which cannot be exactly represented in type 'float'}} +Val(__FLT_DENORM_MIN__) / 2.0L> _2; +// since-cxx20-error-re@-1 {{non-type template argument evaluates to {{.+}} which cannot be exactly represented in type 'float'}} +Val _3; +// since-cxx20-error-re@-1 {{non-type template argument evaluates to {{.+}} which cannot be exactly represented in type 'float'}} + +static_assert(__is_same(Val, Val)); + +static_assert(__is_same(Val, Val(__builtin_nanl(""))>)); +static_assert(__is_same(Val, Val(__builtin_nansl(""))>)); +#if __SIZEOF_LONG_DOUBLE__ > 8 +// since-cxx20-error@-2 {{non-type template argument evaluates to nan which cannot be exactly represented in type 'float'}} +#endif +// Payload is shifted right so these payloads will be preserved +static_assert(__is_same(Val, Val(__builtin_nan("0xFF"))>)); +static_assert(__is_same(Val, Val(__builtin_nans("0xFF"))>)); +static_assert(__is_same(Val, Val(__builtin_nanl("0x1"))>)); shafik wrote: Why does `nanl` fail but `nans` does not? I am not sure this is consistent with [CWG2864](https://cplusplus.github.io/CWG/issues/2864.html), which is not final yet either. https://github.com/llvm/llvm-project/pull/90387 _______ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 1cb3371 - Ensure test writes objects to test temp dir
Author: David Blaikie Date: 2024-04-29T23:50:18Z New Revision: 1cb33713910501c6352d0eb2a15b7a15e6e18695 URL: https://github.com/llvm/llvm-project/commit/1cb33713910501c6352d0eb2a15b7a15e6e18695 DIFF: https://github.com/llvm/llvm-project/commit/1cb33713910501c6352d0eb2a15b7a15e6e18695.diff LOG: Ensure test writes objects to test temp dir Added: Modified: clang/test/CodeGenCoroutines/coro-elide-thinlto.cpp Removed: diff --git a/clang/test/CodeGenCoroutines/coro-elide-thinlto.cpp b/clang/test/CodeGenCoroutines/coro-elide-thinlto.cpp index 293aef6781677f..790899486ec9d1 100644 --- a/clang/test/CodeGenCoroutines/coro-elide-thinlto.cpp +++ b/clang/test/CodeGenCoroutines/coro-elide-thinlto.cpp @@ -2,10 +2,10 @@ // This test is adapted from coro-elide.cpp and splits functions into two files. // // RUN: split-file %s %t -// RUN: %clang --target=x86_64-linux -std=c++20 -O2 -flto=thin -I %S -c %t/coro-elide-callee.cpp -o coro-elide-callee.o -// RUN: %clang --target=x86_64-linux -std=c++20 -O2 -flto=thin -I %S -c %t/coro-elide-caller.cpp -o coro-elide-caller.o -// RUN: llvm-lto -thinlto coro-elide-callee.o coro-elide-caller.o -o summary -// RUN: %clang_cc1 -O2 -x ir coro-elide-caller.o -fthinlto-index=summary.thinlto.bc -emit-llvm -o - | FileCheck %s +// RUN: %clang --target=x86_64-linux -std=c++20 -O2 -flto=thin -I %S -c %t/coro-elide-callee.cpp -o %t/coro-elide-callee.o +// RUN: %clang --target=x86_64-linux -std=c++20 -O2 -flto=thin -I %S -c %t/coro-elide-caller.cpp -o %t/coro-elide-caller.o +// RUN: llvm-lto -thinlto %t/coro-elide-callee.o %t/coro-elide-caller.o -o summary +// RUN: %clang_cc1 -O2 -x ir %t/coro-elide-caller.o -fthinlto-index=summary.thinlto.bc -emit-llvm -o - | FileCheck %s //--- coro-elide-task.h #pragma once ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[Lldb-commits] [lldb] [lldb] Be conversative about setting highmem address masks (PR #90533)
} else if (addr_range == eAddressMaskRangeHigh) { process_sp->SetHighmemCodeAddressMask(mask); process_sp->SetHighmemDataAddressMask(mask); diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp index 30c240b064b59c..a75d7b12520742 100644 --- a/lldb/source/Target/Process.cpp +++ b/lldb/source/Target/Process.cpp @@ -6473,9 +6473,21 @@ void Process::SetAddressableBitMasks(AddressableBits bit_masks) { } if (high_memory_addr_bits != 0) { -addr_t high_addr_mask = -AddressableBits::AddressableBitToMask(high_memory_addr_bits); -SetHighmemCodeAddressMask(high_addr_mask); -SetHighmemDataAddressMask(high_addr_mask); +// If the same high and low mem address bits were specified, +// and we don't have a highmem setting for code and data currently, +// don't set the highmem masks. +// When we have separate high- and low- masks, the user +// setting `virtual-addressable-bits` only overrides the low +// memory masks, which most users would be surprised by. +// Leave the high memory masks unset, to make it clear that only the +// low memory masks are active. +if (high_memory_addr_bits != low_memory_addr_bits || +m_highmem_code_address_mask != LLDB_INVALID_ADDRESS_MASK || +m_highmem_data_address_mask != LLDB_INVALID_ADDRESS_MASK) { + addr_t high_addr_mask = + AddressableBits::AddressableBitToMask(high_memory_addr_bits); + SetHighmemCodeAddressMask(high_addr_mask); + SetHighmemDataAddressMask(high_addr_mask); +} } } diff --git a/lldb/test/API/python_api/process/address-masks/TestAddressMasks.py b/lldb/test/API/python_api/process/address-masks/TestAddressMasks.py index 152776efc726f2..7908a46c0fb38c 100644 --- a/lldb/test/API/python_api/process/address-masks/TestAddressMasks.py +++ b/lldb/test/API/python_api/process/address-masks/TestAddressMasks.py @@ -19,7 +19,7 @@ def reset_all_masks(self, process): self.runCmd("settings set target.process.virtual-addressable-bits 0") self.runCmd("settings set target.process.highmem-virtual-addressable-bits 0") -@skipIf(archs=["arm"]) # 32-bit arm ABI hardcodes Code mask, is 32-bit +@skipIf(archs=["arm$"]) # 32-bit arm ABI hardcodes Code mask, is 32-bit def test_address_masks(self): self.build() (target, process, t, bp) = lldbutil.run_to_source_breakpoint( @@ -80,7 +80,6 @@ def test_address_masks(self): # AArch64 can have different address masks for high and low memory, when different # page tables are set up. @skipIf(archs=no_match(["arm64", "arm64e", "aarch64"])) -@skipIf(archs=["arm"]) # 32-bit arm ABI hardcodes Code mask, is 32-bit def test_address_masks_target_supports_highmem_tests(self): self.build() (target, process, t, bp) = lldbutil.run_to_source_breakpoint( @@ -113,7 +112,7 @@ def test_address_masks_target_supports_highmem_tests(self): # On most targets where we have a single mask for all address range, confirm # that the high memory masks are ignored. @skipIf(archs=["arm64", "arm64e", "aarch64"]) -@skipIf(archs=["arm"]) # 32-bit arm ABI hardcodes Code mask, is 32-bit +@skipIf(archs=["arm$"]) # 32-bit arm ABI hardcodes Code mask, is 32-bit def test_address_masks_target_no_highmem(self): self.build() (target, process, t, bp) = lldbutil.run_to_source_breakpoint( @@ -132,3 +131,19 @@ def test_address_masks_target_no_highmem(self): self.runCmd("settings set target.process.highmem-virtual-addressable-bits 42") self.assertEqual(0x7694, process.FixAddress(0x00265E950001F694)) self.assertEqual(0xF694, process.FixAddress(0xFFA65E95F694)) + +# On most targets where we have a single mask for all address range, confirm +# that the high memory masks are ignored. +@skipIf(archs=no_match(["arm64", "arm64e", "aarch64"])) +def test_address_unset_highmem_masks_stay_unset(self): +self.build() +(target, process, t, bp) = lldbutil.run_to_source_breakpoint( +self, "break here", lldb.SBFileSpec("main.c") +) +self.reset_all_masks(process) + +process.SetAddressableBits( +lldb.eAddressMaskTypeAll, 64, lldb.eAddressMaskRangeLow +) +self.runCmd("settings set target.process.virtual-addressable-bits 47") +self.assertEqual(0xFE0044580BC4, process.FixAddress(0xFFE8FE0044580BC4)) `` https://github.com/llvm/llvm-project/pull/90533 ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [lldb] [lldb] Be conversative about setting highmem address masks (PR #90533)
t def test_address_masks_target_supports_highmem_tests(self): self.build() (target, process, t, bp) = lldbutil.run_to_source_breakpoint( @@ -113,7 +112,7 @@ def test_address_masks_target_supports_highmem_tests(self): # On most targets where we have a single mask for all address range, confirm # that the high memory masks are ignored. @skipIf(archs=["arm64", "arm64e", "aarch64"]) -@skipIf(archs=["arm"]) # 32-bit arm ABI hardcodes Code mask, is 32-bit +@skipIf(archs=["arm$"]) # 32-bit arm ABI hardcodes Code mask, is 32-bit def test_address_masks_target_no_highmem(self): self.build() (target, process, t, bp) = lldbutil.run_to_source_breakpoint( @@ -132,3 +131,19 @@ def test_address_masks_target_no_highmem(self): self.runCmd("settings set target.process.highmem-virtual-addressable-bits 42") self.assertEqual(0x7694, process.FixAddress(0x00265E950001F694)) self.assertEqual(0xF694, process.FixAddress(0xFFA65E95F694)) + +# On most targets where we have a single mask for all address range, confirm +# that the high memory masks are ignored. +@skipIf(archs=no_match(["arm64", "arm64e", "aarch64"])) +def test_address_unset_highmem_masks_stay_unset(self): +self.build() +(target, process, t, bp) = lldbutil.run_to_source_breakpoint( +self, "break here", lldb.SBFileSpec("main.c") +) +self.reset_all_masks(process) + +process.SetAddressableBits( + lldb.eAddressMaskTypeAll, 64, lldb.eAddressMaskRangeLow +) +self.runCmd("settings set target.process.virtual-addressable-bits 47") +self.assertEqual(0xFE0044580BC4, process.FixAddress(0xFFE8FE0044580BC4)) ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[clang] [llvm] [WIP] Expand variadic functions in IR (PR #89007)
gets presently have the same. +struct VAListInterface { + virtual ~VAListInterface() {} + + // Whether a valist instance is passed by value or by address + // I.e. does it need to be alloca'ed and stored into, or can + // it be passed directly in a SSA register + virtual bool passedInSSARegister() = 0; + + // The type of a va_list iterator object + virtual Type *vaListType(LLVMContext ) = 0; + + // The type of a va_list as a function argument as lowered by C jdoerfert wrote: C? https://github.com/llvm/llvm-project/pull/89007 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [WIP] Expand variadic functions in IR (PR #89007)
gets presently have the same. +struct VAListInterface { + virtual ~VAListInterface() {} + + // Whether a valist instance is passed by value or by address + // I.e. does it need to be alloca'ed and stored into, or can + // it be passed directly in a SSA register jdoerfert wrote: Comments should be sentences (with full stop), here and elsewhere. https://github.com/llvm/llvm-project/pull/89007 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [WIP] Expand variadic functions in IR (PR #89007)
+// If we don't know the triple, we can't lower varargs +return false; + } + + ABI = VariadicABIInfo::create(Triple); + if (!ABI) { +if (Mode == ExpandVariadicsMode::Lowering) { + report_fatal_error( + "Requested variadic lowering is unimplemented on this target"); +} +return Changed; + } + + const DataLayout = M.getDataLayout(); + auto = M.getContext(); + IRBuilder<> Builder(Ctx); + + // At pass input, va_start intrinsics only occur in variadic functions, as + // checked by the IR verifier. + + // The lowering pass needs to run on all variadic functions. + // The optimise could run on only those that call va_start + // in exchange for additional book keeping to avoid transforming + // the same function multiple times when it contains multiple va_start. + // Leaving that compile time optimisation for a later patch. + for (Function : llvm::make_early_inc_range(M)) +Changed |= runOnFunction(M, Builder, ); + + // After runOnFunction, all known calls to known variadic functions have been + // replaced. va_start intrinsics are presently (and invalidly!) only present + // in functions thart used to be variadic and have now been mutated to take a + // va_list instead. If lowering as opposed to optimising, calls to unknown + // variadic functions have also been replaced. + + // Warning: Intrinsics acting on other ones are missed + auto CandidateAddressSpaces = supportedAddressSpaces(DL); + + for (unsigned Addrspace : CandidateAddressSpaces) { +PointerType *ArgType = PointerType::get(Ctx, Addrspace); +Changed |= expandIntrinsicUsers(M, Builder, + ArgType); +Changed |= +expandIntrinsicUsers(M, Builder, ArgType); +Changed |= expandIntrinsicUsers(M, Builder, + ArgType); + } + + // Variadic intrinsics are now gone. The va_start have been replaced with the + // equivalent of a va_copy from the newly appended va_list argument, va_end + // and va_copy are removed. All that remains is for the lowering pass to find + // indirect calls and rewrite those as well. + + if (Mode == ExpandVariadicsMode::Lowering) { +for (Function : llvm::make_early_inc_range(M)) { + if (F.isDeclaration()) +continue; + + // Now need to track down indirect calls. Can't find those + // by walking uses of variadic functions, need to crawl the instruction + // stream. Fortunately this is only necessary for the ABI rewrite case. + for (BasicBlock : F) { +for (Instruction : llvm::make_early_inc_range(BB)) { + if (CallBase *CB = dyn_cast()) { +if (CB->isIndirectCall()) { + FunctionType *FTy = CB->getFunctionType(); + if (FTy->isVarArg()) { +Changed |= expandCall(M, Builder, CB, FTy, 0); + } +} + } +} + } +} + } + + return Changed; +} + +bool ExpandVariadics::runOnFunction(Module , IRBuilder<> , +Function *F) { + bool Changed = false; + + // This check might be too coarse - there are probably cases where + // splitting a function is bad but it's usable without splitting + if (!expansionApplicableToFunction(M, F)) +return false; + + // TODO: Leave "thunk" attribute functions alone? + + // Need more tests than this. Weak etc. Some are in expansionApplicable. + if (F->isDeclaration() && !rewriteABI()) { +return false; + } + + // TODO: Is the lazy construction here still useful? + Function *Equivalent = deriveInlinableVariadicFunctionPair(M, Builder, *F); + + for (User *U : llvm::make_early_inc_range(F->users())) { +// TODO: A test where the call instruction takes a variadic function as +// a parameter other than the one it is calling +if (CallBase *CB = dyn_cast(U)) { + Value *calledOperand = CB->getCalledOperand(); + if (F == calledOperand) { +Changed |= expandCall(M, Builder, CB, F->getFunctionType(), Equivalent); + } +} + } + + if (rewriteABI()) { +// No direct calls remain to F, remaining uses are things like address +// escaping, modulo errors in this implementation. +for (User *U : llvm::make_early_inc_range(F->users())) + if (CallBase *CB = dyn_cast(U)) { +Value *calledOperand = CB->getCalledOperand(); +if (F == calledOperand) { + report_fatal_error( + "ExpandVA abi requires eliminating call uses first"); +} jdoerfert wrote: Is this a glorified assert? Style: check variable names here and elsewhere, lots of lower case first letters. https://github.com/llvm/llvm-project/pull/89007 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [WIP] Expand variadic functions in IR (PR #89007)
@@ -0,0 +1,1026 @@ +//===-- ExpandVariadicsPass.cpp *- C++ -*-=// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===--===// +// +// This is an optimization pass for variadic functions. If called from codegen, +// it can serve as the implementation of variadic functions for a given target. +// +// The strategy is to turn the ... part of a varidic function into a va_list +// and fix up the call sites. This is completely effective if the calling +// convention can declare that to be the right thing, e.g. on GPUs or where +// the application is wholly statically linked. In the usual case, it will +// replace known calls to known variadic functions with calls that are amenable +// to inlining and other optimisations. +// +// The target-dependent parts are in class VariadicABIInfo. Enabling a new +// target means adding a case to VariadicABIInfo::create() along with tests. +// This will be especially simple if the va_list representation is a char*. +// +// The majority of the plumbing is splitting the variadic function into a +// single basic block that packs the variadic arguments into a va_list and +// a second function that does the work of the original. The target specific +// part is packing arguments into a contiguous buffer that the clang expansion +// of va_arg will do the right thing with. +// +// The aggregate effect is to unblock other transforms, most critically the +// general purpose inliner. Known calls to variadic functions become zero cost. +// +// Consistency with clang is primarily tested by emitting va_arg using clang +// then expanding the variadic functions using this pass, followed by trying +// to constant fold the functions to no-ops. +// +// Target specific behaviour is tested in IR - mainly checking that values are +// put into positions in call frames that make sense for that particular target. +// +//===--===// + +#include "llvm/Transforms/IPO/ExpandVariadics.h" +#include "llvm/ADT/SmallSet.h" +#include "llvm/ADT/SmallVector.h" +#include "llvm/CodeGen/Passes.h" +#include "llvm/IR/Constants.h" +#include "llvm/IR/IRBuilder.h" +#include "llvm/IR/IntrinsicInst.h" +#include "llvm/IR/Module.h" +#include "llvm/IR/PassManager.h" +#include "llvm/InitializePasses.h" +#include "llvm/Pass.h" +#include "llvm/Passes/OptimizationLevel.h" +#include "llvm/Support/CommandLine.h" +#include "llvm/TargetParser/Triple.h" + +#define DEBUG_TYPE "expand-variadics" + +using namespace llvm; + +cl::opt ExpandVariadicsModeOption( +DEBUG_TYPE "-override", cl::desc("Override the behaviour of " DEBUG_TYPE), +cl::init(ExpandVariadicsMode::Unspecified), +cl::values(clEnumValN(ExpandVariadicsMode::Unspecified, "unspecified", + "Use the implementation defaults"), + clEnumValN(ExpandVariadicsMode::Disable, "disable", + "Disable the pass entirely"), + clEnumValN(ExpandVariadicsMode::Optimize, "optimize", + "Optimise without changing ABI"), + clEnumValN(ExpandVariadicsMode::Lowering, "lowering", + "Change variadic calling convention"))); + +namespace { + +// At present Intrinsic:: has no interface to test if a declaration is in the +// module without creating one. Inserting a declaration and then testing if it +// has any uses and then deleting it seems a bad way to do the query. +// Module implements getFunction() which returns nullptr on missing declaration +// and getOrInsertFunction which creates one when absent. Intrinsics.h +// implements getDeclaration which creates one when missing. This should be +// changed to be consistent with Module()'s naming. Implementing as a local +// function here in the meantime to decouple from that process. +Function *getPreexistingDeclaration(Module *M, Intrinsic::ID id, ---- jdoerfert wrote: ```suggestion Function *getPreexistingDeclaration(Module *M, Intrinsic::ID Id, ``` https://github.com/llvm/llvm-project/pull/89007 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [WIP] Expand variadic functions in IR (PR #89007)
gets presently have the same. +struct VAListInterface { + virtual ~VAListInterface() {} + + // Whether a valist instance is passed by value or by address + // I.e. does it need to be alloca'ed and stored into, or can + // it be passed directly in a SSA register + virtual bool passedInSSARegister() = 0; + + // The type of a va_list iterator object + virtual Type *vaListType(LLVMContext ) = 0; + + // The type of a va_list as a function argument as lowered by C + virtual Type *vaListParameterType(Module ) = 0; + + // Initialise an allocated va_list object to point to an already + // initialised contiguous memory region. + // Return the value to pass as the va_list argument + virtual Value *initializeVAList(LLVMContext , IRBuilder<> , + AllocaInst *, Value * /*buffer*/) = 0; jdoerfert wrote: No need for the comment. Name all arguments. https://github.com/llvm/llvm-project/pull/89007 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [WIP] Expand variadic functions in IR (PR #89007)
gets presently have the same. +struct VAListInterface { + virtual ~VAListInterface() {} + + // Whether a valist instance is passed by value or by address + // I.e. does it need to be alloca'ed and stored into, or can + // it be passed directly in a SSA register + virtual bool passedInSSARegister() = 0; + + // The type of a va_list iterator object + virtual Type *vaListType(LLVMContext ) = 0; + + // The type of a va_list as a function argument as lowered by C + virtual Type *vaListParameterType(Module ) = 0; + + // Initialise an allocated va_list object to point to an already + // initialised contiguous memory region. + // Return the value to pass as the va_list argument + virtual Value *initializeVAList(LLVMContext , IRBuilder<> , + AllocaInst *, Value * /*buffer*/) = 0; + + // Simple lowering suffices for va_end, va_copy for current targets + bool vaEndIsNop() { return true; } + bool vaCopyIsMemcpy() { return true; } +}; + +// The majority case - a void* of an alloca +struct VoidPtr final : public VAListInterface { + bool passedInSSARegister() override { return true; } + + Type *vaListType(LLVMContext ) override { +return PointerType::getUnqual(Ctx); + } + + Type *vaListParameterType(Module ) override { +const DataLayout = M.getDataLayout(); +return DL.getAllocaPtrType(M.getContext()); + } + + Value *initializeVAList(LLVMContext , IRBuilder<> , + AllocaInst * /*va_list*/, Value *buffer) override { ---- jdoerfert wrote: Again style. Names, and capitalization. https://github.com/llvm/llvm-project/pull/89007 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [WIP] Expand variadic functions in IR (PR #89007)
https://github.com/jdoerfert commented: I just read over this and left some comments. https://github.com/llvm/llvm-project/pull/89007 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [WIP] Expand variadic functions in IR (PR #89007)
https://github.com/jdoerfert edited https://github.com/llvm/llvm-project/pull/89007 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[Lldb-commits] [lldb] Summarize std::string's when created from data. (PR #89110)
@@ -254,13 +254,17 @@ bool lldb_private::formatters::LibStdcppStringSummaryProvider( } else addr_of_string = valobj.GetAddressOf(scalar_is_load_addr, _type); - if (addr_of_string != LLDB_INVALID_ADDRESS) { + + // We have to check for host address here + // because GetAddressOf returns INVALID for all non load addresses. + // But we can still format strings in host memory. + if (addr_of_string != LLDB_INVALID_ADDRESS || +addr_type == eAddressTypeHost) { Jlalond wrote: That I don't know. ValueObject does [explicitly return](https://github.com/llvm/llvm-project/blob/main/lldb/source/Core/ValueObject.cpp#L1408C12-L1408C32) `LLDB_INVALID_ADDRESS` when `addressType == eAddressTypeHost`. I thought this was weird and potentially returning the address of the in memory buffer made more sense, but that seemed like a major refactor for a minor string issue https://github.com/llvm/llvm-project/pull/89110 ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[llvm-branch-commits] [BOLT][NFCI] Use heuristic for matching split global functions (PR #90429)
https://github.com/aaupov edited https://github.com/llvm/llvm-project/pull/90429 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[Lldb-commits] [lldb] Summarize std::string's when created from data. (PR #89110)
@@ -287,8 +291,52 @@ bool lldb_private::formatters::LibStdcppStringSummaryProvider( } else return true; } break; -case eAddressTypeHost: - break; +case eAddressTypeHost: { + + DataExtractor data; + Status error; + valobj.GetData(data, error); + if (error.Fail()) +return false; + Jlalond wrote: Wouldn't short string optimization be covered by the check at the address type of children (Line 303)? If the children are host we directly read the std::string from the data extractor https://github.com/llvm/llvm-project/pull/89110 ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[clang] [SemaCXX] Implement CWG2351 `void{}` (PR #78060)
zygoloid wrote: > Note that the AST for the expression `T{}` looks like: > > ``` > // using T = int; > CXXFunctionalCastExpr 'T':'int' functional cast to T > `-InitListExpr 'T':'int' > // using T = const int; > CXXFunctionalCastExpr 'int' functional cast to T > `-InitListExpr 'int' > // using T = void; > CXXFunctionalCastExpr 'void' functional cast to T > `-InitListExpr 'void' > // using T = const void; > CXXFunctionalCastExpr 'void' functional cast to T > `-InitListExpr 'void' > ``` > > (Since the `InitListExpr` already has `void` before anything is done, the > type doesn't need to be adjusted) Nonetheless, I think it'd be more reasonable to use `CK_ToVoid` here rather than `CK_NoOp`. The `void` type for the `InitListExpr` is just a placeholder and not meant to mean that it's a real expression of type `void`. (We really ought to use a better placeholder there, so we can print the type out as `` instead of as `void` in diagnostics.) https://github.com/llvm/llvm-project/pull/78060 _______ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[llvm-branch-commits] [BOLT][NFCI] Use heuristic for matching split global functions (PR #90429)
https://github.com/aaupov edited https://github.com/llvm/llvm-project/pull/90429 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [BOLT][NFCI] Use heuristic for matching split global functions (PR #90429)
https://github.com/aaupov updated https://github.com/llvm/llvm-project/pull/90429 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [BOLT][NFCI] Use heuristic for matching split global functions (PR #90429)
https://github.com/aaupov updated https://github.com/llvm/llvm-project/pull/90429 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[jenkinsci/stapler] a5901b: Bump org.kohsuke.stapler:json-lib from 2.4-jenkins...
Branch: refs/heads/master Home: https://github.com/jenkinsci/stapler Commit: a5901b5b5bfa1f03bae03f25738a3420e907d799 https://github.com/jenkinsci/stapler/commit/a5901b5b5bfa1f03bae03f25738a3420e907d799 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: 2024-04-29 (Mon, 29 Apr 2024) Changed paths: M core/pom.xml Log Message: --- Bump org.kohsuke.stapler:json-lib from 2.4-jenkins-5 to 2.4-jenkins-7 (#534) To unsubscribe from these emails, change your notification settings at https://github.com/jenkinsci/stapler/settings/notifications -- You received this message because you are subscribed to the Google Groups "Jenkins Commits" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-commits+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-commits/jenkinsci/stapler/push/refs/heads/master/9ce4a9-a5901b%40github.com.
[pmd-commits] [pmd/pmd-github-action] 8ccede: Bump eslint-plugin-jest from 27.9.0 to 28.3.0
Branch: refs/heads/dependabot/npm_and_yarn/eslint-plugin-jest-28.3.0 Home: https://github.com/pmd/pmd-github-action Commit: 8ccede1257072a0338a27de4a27491b0dba4d1ec https://github.com/pmd/pmd-github-action/commit/8ccede1257072a0338a27de4a27491b0dba4d1ec Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: 2024-04-29 (Mon, 29 Apr 2024) Changed paths: M package-lock.json M package.json Log Message: --- Bump eslint-plugin-jest from 27.9.0 to 28.3.0 Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 27.9.0 to 28.3.0. - [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases) - [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v27.9.0...v28.3.0) --- updated-dependencies: - dependency-name: eslint-plugin-jest dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] To unsubscribe from these emails, change your notification settings at https://github.com/pmd/pmd-github-action/settings/notifications ___ Pmd-commits mailing list Pmd-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/pmd-commits
[pmd-commits] [pmd/pmd-github-action]
Branch: refs/heads/dependabot/npm_and_yarn/eslint-plugin-jest-28.2.0 Home: https://github.com/pmd/pmd-github-action To unsubscribe from these emails, change your notification settings at https://github.com/pmd/pmd-github-action/settings/notifications ___ Pmd-commits mailing list Pmd-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/pmd-commits
[pmd-commits] [pmd/pmd-github-action]
Branch: refs/heads/dependabot/npm_and_yarn/typescript-eslint/parser-7.7.1 Home: https://github.com/pmd/pmd-github-action To unsubscribe from these emails, change your notification settings at https://github.com/pmd/pmd-github-action/settings/notifications ___ Pmd-commits mailing list Pmd-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/pmd-commits
[pmd-commits] [pmd/pmd-github-action] 545ce8: Bump @typescript-eslint/parser from 7.5.0 to 7.8.0
Branch: refs/heads/dependabot/npm_and_yarn/typescript-eslint/parser-7.8.0 Home: https://github.com/pmd/pmd-github-action Commit: 545ce8fb41cee8f01a06469fcfbcda3ce1fa18f0 https://github.com/pmd/pmd-github-action/commit/545ce8fb41cee8f01a06469fcfbcda3ce1fa18f0 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: 2024-04-29 (Mon, 29 Apr 2024) Changed paths: M package-lock.json M package.json Log Message: --- Bump @typescript-eslint/parser from 7.5.0 to 7.8.0 Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 7.5.0 to 7.8.0. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.8.0/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/parser" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] To unsubscribe from these emails, change your notification settings at https://github.com/pmd/pmd-github-action/settings/notifications ___ Pmd-commits mailing list Pmd-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/pmd-commits
[pmd-commits] [pmd/pmd-github-action]
Branch: refs/heads/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-7.7.1 Home: https://github.com/pmd/pmd-github-action To unsubscribe from these emails, change your notification settings at https://github.com/pmd/pmd-github-action/settings/notifications ___ Pmd-commits mailing list Pmd-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/pmd-commits
[pmd-commits] [pmd/pmd-github-action] 8ab2d5: Bump @typescript-eslint/eslint-plugin from 7.5.0 t...
Branch: refs/heads/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-7.8.0 Home: https://github.com/pmd/pmd-github-action Commit: 8ab2d517664e53b6b25568d3c269c3db0bdfdb19 https://github.com/pmd/pmd-github-action/commit/8ab2d517664e53b6b25568d3c269c3db0bdfdb19 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: 2024-04-29 (Mon, 29 Apr 2024) Changed paths: M package-lock.json M package.json Log Message: --- Bump @typescript-eslint/eslint-plugin from 7.5.0 to 7.8.0 Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 7.5.0 to 7.8.0. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.8.0/packages/eslint-plugin) --- updated-dependencies: - dependency-name: "@typescript-eslint/eslint-plugin" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] To unsubscribe from these emails, change your notification settings at https://github.com/pmd/pmd-github-action/settings/notifications ___ Pmd-commits mailing list Pmd-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/pmd-commits
[Lldb-commits] [lldb] [lldb] Display breakpoint locations using display name (PR #90297)
@@ -685,7 +686,7 @@ bool Address::Dump(Stream *s, ExecutionContextScope *exe_scope, DumpStyle style, sc.DumpStopContext(s, exe_scope, *this, show_fullpaths, show_module, show_inlined_frames, show_function_arguments, show_function_name, - settings); + false, settings); kastiglione wrote: I wanted to limit the initial scope of changes to just breakpoint locations. It may be that we want to change this to true, but it has not be discussed (or audited, or tested) and so I am not confident in changing this too. https://github.com/llvm/llvm-project/pull/90297 ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[llvm-branch-commits] [llvm] [BOLT] Use heuristic for matching split local functions (PR #90424)
Expected NameOrError = Symbol.getName(); + Expected NameOrError = NextSymbol.getName(); if (!NameOrError) break; StringRef Name = *NameOrError; >From b39489c935a41882b55f6dba3a31e1c9fdb3e4b5 Mon Sep 17 00:00:00 2001 From: Amir Ayupov Date: Mon, 29 Apr 2024 16:05:05 -0700 Subject: [PATCH 4/4] Use cantFail(Symbol.getName()) for consistency --- bolt/lib/Rewrite/RewriteInstance.cpp | 5 + 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/bolt/lib/Rewrite/RewriteInstance.cpp b/bolt/lib/Rewrite/RewriteInstance.cpp index 5e7bcd06df82c4..997b158315fd76 100644 --- a/bolt/lib/Rewrite/RewriteInstance.cpp +++ b/bolt/lib/Rewrite/RewriteInstance.cpp @@ -1515,10 +1515,7 @@ void RewriteInstance::registerFragments() { // symbol. for (ELFSymbolRef NextSymbol = Symbol; NextSymbol < StopSymbol; NextSymbol.moveNext()) { - Expected NameOrError = NextSymbol.getName(); - if (!NameOrError) -break; - StringRef Name = *NameOrError; + StringRef Name = cantFail(NextSymbol.getName()); if (Name == ParentName) { ParentAddress = cantFail(NextSymbol.getValue()); goto registerParent; ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [llvm] [BOLT] Use heuristic for matching split local functions (PR #90424)
Expected NameOrError = Symbol.getName(); + Expected NameOrError = NextSymbol.getName(); if (!NameOrError) break; StringRef Name = *NameOrError; >From b39489c935a41882b55f6dba3a31e1c9fdb3e4b5 Mon Sep 17 00:00:00 2001 From: Amir Ayupov Date: Mon, 29 Apr 2024 16:05:05 -0700 Subject: [PATCH 4/4] Use cantFail(Symbol.getName()) for consistency --- bolt/lib/Rewrite/RewriteInstance.cpp | 5 + 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/bolt/lib/Rewrite/RewriteInstance.cpp b/bolt/lib/Rewrite/RewriteInstance.cpp index 5e7bcd06df82c4..997b158315fd76 100644 --- a/bolt/lib/Rewrite/RewriteInstance.cpp +++ b/bolt/lib/Rewrite/RewriteInstance.cpp @@ -1515,10 +1515,7 @@ void RewriteInstance::registerFragments() { // symbol. for (ELFSymbolRef NextSymbol = Symbol; NextSymbol < StopSymbol; NextSymbol.moveNext()) { - Expected NameOrError = NextSymbol.getName(); - if (!NameOrError) -break; - StringRef Name = *NameOrError; + StringRef Name = cantFail(NextSymbol.getName()); if (Name == ParentName) { ParentAddress = cantFail(NextSymbol.getValue()); goto registerParent; ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[Lldb-commits] [lldb] [lldb] Display breakpoint locations using display name (PR #90297)
kastiglione wrote: @jimingham I'm not sure I've understood your comment entirely. Are you saying the following? 1. Always use `GetDisplayName` when displaying a mangled name 2. Add a setting allowing the user to see `GetName` (which `GetDisplayName` will call whenever the setting is enabled) What about the cases where the context ("is the name being displayed?") is unclear at the call site? This is why I introduced the `show_function_display_name` parameter, because `DumpStopContext` could be called from either context. https://github.com/llvm/llvm-project/pull/90297 ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [lldb] [lldb] Display breakpoint locations using display name (PR #90297)
@@ -685,7 +686,7 @@ bool Address::Dump(Stream *s, ExecutionContextScope *exe_scope, DumpStyle style, sc.DumpStopContext(s, exe_scope, *this, show_fullpaths, show_module, show_inlined_frames, show_function_arguments, show_function_name, - settings); + false, settings); adrian-prantl wrote: Why is this one false? https://github.com/llvm/llvm-project/pull/90297 ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[jenkinsci/jenkins] 48975b: Bump org.kohsuke.stapler:json-lib from 2.4-jenkins...
Branch: refs/heads/dependabot/maven/org.kohsuke.stapler-json-lib-2.4-jenkins-7 Home: https://github.com/jenkinsci/jenkins Commit: 48975bf196cd9c39decf14d6ab25ca77f0280651 https://github.com/jenkinsci/jenkins/commit/48975bf196cd9c39decf14d6ab25ca77f0280651 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: 2024-04-29 (Mon, 29 Apr 2024) Changed paths: M bom/pom.xml Log Message: --- Bump org.kohsuke.stapler:json-lib from 2.4-jenkins-5 to 2.4-jenkins-7 Bumps [org.kohsuke.stapler:json-lib](https://github.com/jenkinsci/json-lib) from 2.4-jenkins-5 to 2.4-jenkins-7. - [Release notes](https://github.com/jenkinsci/json-lib/releases) - [Commits](https://github.com/jenkinsci/json-lib/commits) --- updated-dependencies: - dependency-name: org.kohsuke.stapler:json-lib dependency-type: direct:production ... Signed-off-by: dependabot[bot] To unsubscribe from these emails, change your notification settings at https://github.com/jenkinsci/jenkins/settings/notifications -- You received this message because you are subscribed to the Google Groups "Jenkins Commits" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-commits+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-commits/jenkinsci/jenkins/push/refs/heads/dependabot/maven/org.kohsuke.stapler-json-lib-2.4-jenkins-7/00-48975b%40github.com.
[clang] [SemaCXX] Implement CWG2351 `void{}` (PR #78060)
shafik wrote: @MitalAshok ping https://github.com/llvm/llvm-project/pull/78060 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[jenkinsci/stapler] 7cfab3: Bump org.kohsuke.stapler:json-lib from 2.4-jenkins...
Branch: refs/heads/dependabot/maven/org.kohsuke.stapler-json-lib-2.4-jenkins-7 Home: https://github.com/jenkinsci/stapler Commit: 7cfab3b4e4c88e562aea30f52d1cb8b0bb95e155 https://github.com/jenkinsci/stapler/commit/7cfab3b4e4c88e562aea30f52d1cb8b0bb95e155 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: 2024-04-29 (Mon, 29 Apr 2024) Changed paths: M core/pom.xml Log Message: --- Bump org.kohsuke.stapler:json-lib from 2.4-jenkins-5 to 2.4-jenkins-7 Bumps [org.kohsuke.stapler:json-lib](https://github.com/jenkinsci/json-lib) from 2.4-jenkins-5 to 2.4-jenkins-7. - [Release notes](https://github.com/jenkinsci/json-lib/releases) - [Commits](https://github.com/jenkinsci/json-lib/commits) --- updated-dependencies: - dependency-name: org.kohsuke.stapler:json-lib dependency-type: direct:production ... Signed-off-by: dependabot[bot] To unsubscribe from these emails, change your notification settings at https://github.com/jenkinsci/stapler/settings/notifications -- You received this message because you are subscribed to the Google Groups "Jenkins Commits" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-commits+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-commits/jenkinsci/stapler/push/refs/heads/dependabot/maven/org.kohsuke.stapler-json-lib-2.4-jenkins-7/00-7cfab3%40github.com.
[Lldb-commits] [lldb] [lldb] Consult Language plugin in GetDisplayDemangledName (PR #90294)
https://github.com/adrian-prantl approved this pull request. https://github.com/llvm/llvm-project/pull/90294 ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[jenkinsci/json-lib] a4850e: [maven-release-plugin] prepare for next developmen...
Branch: refs/heads/master Home: https://github.com/jenkinsci/json-lib Commit: a4850e3ad12e083a0afe98ecafbdc57d54de03b1 https://github.com/jenkinsci/json-lib/commit/a4850e3ad12e083a0afe98ecafbdc57d54de03b1 Author: Basil Crow Date: 2024-04-29 (Mon, 29 Apr 2024) Changed paths: M pom.xml Log Message: --- [maven-release-plugin] prepare for next development iteration To unsubscribe from these emails, change your notification settings at https://github.com/jenkinsci/json-lib/settings/notifications -- You received this message because you are subscribed to the Google Groups "Jenkins Commits" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-commits+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-commits/jenkinsci/json-lib/push/refs/heads/master/d5f746-a4850e%40github.com.
[jenkinsci/json-lib] d5f746: [maven-release-plugin] prepare release json-lib-2....
Branch: refs/heads/master Home: https://github.com/jenkinsci/json-lib Commit: d5f746045bb5820e1bc00f5c651c81718f58fb2a https://github.com/jenkinsci/json-lib/commit/d5f746045bb5820e1bc00f5c651c81718f58fb2a Author: Basil Crow Date: 2024-04-29 (Mon, 29 Apr 2024) Changed paths: M pom.xml Log Message: --- [maven-release-plugin] prepare release json-lib-2.4-jenkins-7 To unsubscribe from these emails, change your notification settings at https://github.com/jenkinsci/json-lib/settings/notifications -- You received this message because you are subscribed to the Google Groups "Jenkins Commits" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-commits+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-commits/jenkinsci/json-lib/push/refs/heads/master/f63a74-d5f746%40github.com.
[clang] [CUDA] make kernel stub ICF-proof (PR #90155)
@@ -424,6 +424,34 @@ void CGNVCUDARuntime::emitDeviceStubBodyNew(CodeGenFunction , CGM.CreateRuntimeFunction(FTy, LaunchKernelName); CGF.EmitCall(FI, CGCallee::forDirect(cudaLaunchKernelFn), ReturnValueSlot(), LaunchKernelArgs); + + // To prevent CUDA device stub functions from being merged by ICF in MSVC + // environment, create an unique global variable for each kernel and write to + // the variable in the device stub. + if (CGM.getContext().getTargetInfo().getCXXABI().isMicrosoft() && + !CGF.getLangOpts().HIP) { +llvm::Function *KernelFunction = llvm::cast(Kernel); +if (KernelFunction->hasComdat()) { + std::string KernelName = KernelFunction->getName().str(); + std::string GlobalVarName = KernelName + ".id"; + + llvm::GlobalVariable *HandleVar = + CGM.getModule().getNamedGlobal(GlobalVarName); + if (!HandleVar) { +HandleVar = new llvm::GlobalVariable( +CGM.getModule(), CGM.Int8Ty, +/*Constant=*/false, KernelFunction->getLinkage(), +llvm::ConstantInt::get(CGM.Int8Ty, 0), GlobalVarName); +HandleVar->setDSOLocal(KernelFunction->isDSOLocal()); +HandleVar->setVisibility(KernelFunction->getVisibility()); +HandleVar->setComdat(CGM.getModule().getOrInsertComdat(GlobalVarName)); + } + + CGF.Builder.CreateAlignedStore(llvm::ConstantInt::get(CGM.Int8Ty, 1), rnk wrote: LLVM knows how to optimize away a single write to an otherwise unused global, so I would mark this store volatile. https://github.com/llvm/llvm-project/pull/90155 ___________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [CUDA] make kernel stub ICF-proof (PR #90155)
@@ -424,6 +424,34 @@ void CGNVCUDARuntime::emitDeviceStubBodyNew(CodeGenFunction , CGM.CreateRuntimeFunction(FTy, LaunchKernelName); CGF.EmitCall(FI, CGCallee::forDirect(cudaLaunchKernelFn), ReturnValueSlot(), LaunchKernelArgs); + + // To prevent CUDA device stub functions from being merged by ICF in MSVC + // environment, create an unique global variable for each kernel and write to + // the variable in the device stub. + if (CGM.getContext().getTargetInfo().getCXXABI().isMicrosoft() && + !CGF.getLangOpts().HIP) { +llvm::Function *KernelFunction = llvm::cast(Kernel); +if (KernelFunction->hasComdat()) { + std::string KernelName = KernelFunction->getName().str(); rnk wrote: Please avoid making an extra copy of the original name, since C++ names can be many kilobytes. Use `(KernelFunction->getName() + ".id").str()` to construct the `std::string`. https://github.com/llvm/llvm-project/pull/90155 _______ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [CUDA] make kernel stub ICF-proof (PR #90155)
@@ -424,6 +424,34 @@ void CGNVCUDARuntime::emitDeviceStubBodyNew(CodeGenFunction , CGM.CreateRuntimeFunction(FTy, LaunchKernelName); CGF.EmitCall(FI, CGCallee::forDirect(cudaLaunchKernelFn), ReturnValueSlot(), LaunchKernelArgs); + + // To prevent CUDA device stub functions from being merged by ICF in MSVC + // environment, create an unique global variable for each kernel and write to + // the variable in the device stub. + if (CGM.getContext().getTargetInfo().getCXXABI().isMicrosoft() && + !CGF.getLangOpts().HIP) { +llvm::Function *KernelFunction = llvm::cast(Kernel); +if (KernelFunction->hasComdat()) { rnk wrote: ICF may apply to all functions under [`/Gy`](https://learn.microsoft.com/en-us/cpp/build/reference/gy-enable-function-level-linking?view=msvc-170), and those are not reflected in the IR, so I would just do this for all kernels. https://github.com/llvm/llvm-project/pull/90155 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[jenkinsci/json-lib] f63a74: Revert part of #33 (#38)
Branch: refs/heads/master Home: https://github.com/jenkinsci/json-lib Commit: f63a74abe08dfe83b29eaf5aeef84e47d403990a https://github.com/jenkinsci/json-lib/commit/f63a74abe08dfe83b29eaf5aeef84e47d403990a Author: Basil Crow Date: 2024-04-29 (Mon, 29 Apr 2024) Changed paths: M src/main/java/net/sf/json/JSONObject.java Log Message: --- Revert part of #33 (#38) To unsubscribe from these emails, change your notification settings at https://github.com/jenkinsci/json-lib/settings/notifications -- You received this message because you are subscribed to the Google Groups "Jenkins Commits" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-commits+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-commits/jenkinsci/json-lib/push/refs/heads/master/e1d263-f63a74%40github.com.
[clang] Add support for builtin_verbose_trap (PR #79230)
@@ -27,6 +27,9 @@ namespace llvm { } } +// Prefix for __builtin_verbose_trap. +#define CLANG_VERBOSE_TRAP_PREFIX "__llvm_verbose_trap" adrian-prantl wrote: Does this have to be a macro or could it be a C++ constant? https://github.com/llvm/llvm-project/pull/79230 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[Lldb-commits] [lldb] [lldb] Display breakpoint locations using display name (PR #90297)
https://github.com/kastiglione edited https://github.com/llvm/llvm-project/pull/90297 ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[jenkinsci/plugin-pom]
Branch: refs/heads/dependabot/maven/org.jenkins-ci.main-jenkins-test-harness-2193.v71b_f09ec6d46 Home: https://github.com/jenkinsci/plugin-pom To unsubscribe from these emails, change your notification settings at https://github.com/jenkinsci/plugin-pom/settings/notifications -- You received this message because you are subscribed to the Google Groups "Jenkins Commits" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-commits+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-commits/jenkinsci/plugin-pom/push/refs/heads/dependabot/maven/org.jenkins-ci.main-jenkins-test-harness-2193.v71b_f09ec6d46/8e1f2a-00%40github.com.
[jenkinsci/plugin-pom] 57ab95: Bump org.jenkins-ci.main:jenkins-test-harness (#928)
Branch: refs/heads/master Home: https://github.com/jenkinsci/plugin-pom Commit: 57ab95b2d39c3ad39c55088a71c9dd434fc4b815 https://github.com/jenkinsci/plugin-pom/commit/57ab95b2d39c3ad39c55088a71c9dd434fc4b815 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: 2024-04-29 (Mon, 29 Apr 2024) Changed paths: M pom.xml Log Message: --- Bump org.jenkins-ci.main:jenkins-test-harness (#928) To unsubscribe from these emails, change your notification settings at https://github.com/jenkinsci/plugin-pom/settings/notifications -- You received this message because you are subscribed to the Google Groups "Jenkins Commits" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-commits+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-commits/jenkinsci/plugin-pom/push/refs/heads/master/8b2d91-57ab95%40github.com.
[llvm-branch-commits] [llvm] [BOLT] Use heuristic for matching split local functions (PR #90424)
https://github.com/aaupov edited https://github.com/llvm/llvm-project/pull/90424 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[clang] [llvm] Implement resource binding type prefix mismatch errors (PR #87578)
@@ -44,7 +44,7 @@ void foo2() { // expected-warning@+1 {{'register' attribute only applies to cbuffer/tbuffer and external global variables}} extern RWBuffer U2 : register(u5); } -// FIXME: expect-error once fix https://github.com/llvm/llvm-project/issues/57886. +// expected-error@+1 {{invalid register name prefix 'u' for 'float' (expected 't')}} python3kgae wrote: Since here the float is in global scope, it will be treated as constant inside Global CBuffer. https://github.com/llvm/llvm-project/pull/87578 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[llvm-branch-commits] [llvm] [BOLT] Use heuristic for matching split local functions (PR #90424)
Expected NameOrError = Symbol.getName(); + Expected NameOrError = NextSymbol.getName(); if (!NameOrError) break; StringRef Name = *NameOrError; >From b39489c935a41882b55f6dba3a31e1c9fdb3e4b5 Mon Sep 17 00:00:00 2001 From: Amir Ayupov Date: Mon, 29 Apr 2024 16:05:05 -0700 Subject: [PATCH 4/4] Use cantFail(Symbol.getName()) for consistency --- bolt/lib/Rewrite/RewriteInstance.cpp | 5 + 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/bolt/lib/Rewrite/RewriteInstance.cpp b/bolt/lib/Rewrite/RewriteInstance.cpp index 5e7bcd06df82c4..997b158315fd76 100644 --- a/bolt/lib/Rewrite/RewriteInstance.cpp +++ b/bolt/lib/Rewrite/RewriteInstance.cpp @@ -1515,10 +1515,7 @@ void RewriteInstance::registerFragments() { // symbol. for (ELFSymbolRef NextSymbol = Symbol; NextSymbol < StopSymbol; NextSymbol.moveNext()) { - Expected NameOrError = NextSymbol.getName(); - if (!NameOrError) -break; - StringRef Name = *NameOrError; + StringRef Name = cantFail(NextSymbol.getName()); if (Name == ParentName) { ParentAddress = cantFail(NextSymbol.getValue()); goto registerParent; ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[clang] [llvm] Implement resource binding type prefix mismatch errors (PR #87578)
@@ -44,7 +44,7 @@ void foo2() { // expected-warning@+1 {{'register' attribute only applies to cbuffer/tbuffer and external global variables}} extern RWBuffer U2 : register(u5); } -// FIXME: expect-error once fix https://github.com/llvm/llvm-project/issues/57886. +// expected-error@+1 {{invalid register name prefix 'u' for 'float' (expected 't')}} python3kgae wrote: dxc will report error: invalid register specification, expected 'b', 'c', or 'i' binding float t : register(u0); ^ fxc will just ignore the register(u0). https://github.com/llvm/llvm-project/pull/87578 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[jenkinsci/plugin-pom] 8e1f2a: Bump org.jenkins-ci.main:jenkins-test-harness
Branch: refs/heads/dependabot/maven/org.jenkins-ci.main-jenkins-test-harness-2193.v71b_f09ec6d46 Home: https://github.com/jenkinsci/plugin-pom Commit: 8e1f2a7b19f0f0cf5c9b3df5c9874e3fd19dc33c https://github.com/jenkinsci/plugin-pom/commit/8e1f2a7b19f0f0cf5c9b3df5c9874e3fd19dc33c Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: 2024-04-29 (Mon, 29 Apr 2024) Changed paths: M pom.xml Log Message: --- Bump org.jenkins-ci.main:jenkins-test-harness Bumps [org.jenkins-ci.main:jenkins-test-harness](https://github.com/jenkinsci/jenkins-test-harness) from 2189.v1c38d94b_43b_a_ to 2193.v71b_f09ec6d46. - [Release notes](https://github.com/jenkinsci/jenkins-test-harness/releases) - [Changelog](https://github.com/jenkinsci/jenkins-test-harness/blob/master/docs/CHANGELOG-OLD.md) - [Commits](https://github.com/jenkinsci/jenkins-test-harness/commits) --- updated-dependencies: - dependency-name: org.jenkins-ci.main:jenkins-test-harness dependency-type: direct:development ... Signed-off-by: dependabot[bot] To unsubscribe from these emails, change your notification settings at https://github.com/jenkinsci/plugin-pom/settings/notifications -- You received this message because you are subscribed to the Google Groups "Jenkins Commits" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-commits+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-commits/jenkinsci/plugin-pom/push/refs/heads/dependabot/maven/org.jenkins-ci.main-jenkins-test-harness-2193.v71b_f09ec6d46/00-8e1f2a%40github.com.
[clang] [WebAssembly] Add preprocessor define for half-precision (PR #90528)
https://github.com/tlively approved this pull request. https://github.com/llvm/llvm-project/pull/90528 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[Lldb-commits] [lldb] Summarize std::string's when created from data. (PR #89110)
@@ -287,8 +291,52 @@ bool lldb_private::formatters::LibStdcppStringSummaryProvider( } else return true; } break; -case eAddressTypeHost: - break; +case eAddressTypeHost: { + + DataExtractor data; + Status error; + valobj.GetData(data, error); + if (error.Fail()) +return false; + clayborg wrote: Where is the code that detects the short string optimization? I don't see it here anywhere? https://github.com/llvm/llvm-project/pull/89110 ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [lldb] Summarize std::string's when created from data. (PR #89110)
@@ -287,8 +291,52 @@ bool lldb_private::formatters::LibStdcppStringSummaryProvider( } else return true; } break; -case eAddressTypeHost: - break; +case eAddressTypeHost: { + + DataExtractor data; + Status error; + valobj.GetData(data, error); + if (error.Fail()) +return false; + + lldb::offset_t offset = 0; + AddressType child_addressType = valobj.GetAddressTypeOfChildren(); + if (child_addressType == eAddressTypeLoad) + { clayborg wrote: The `{` goes at the end of the `if` line per llvm coding guidelines https://github.com/llvm/llvm-project/pull/89110 ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [lldb] Summarize std::string's when created from data. (PR #89110)
@@ -287,8 +291,52 @@ bool lldb_private::formatters::LibStdcppStringSummaryProvider( } else return true; } break; -case eAddressTypeHost: - break; +case eAddressTypeHost: { + + DataExtractor data; + Status error; + valobj.GetData(data, error); + if (error.Fail()) +return false; + + lldb::offset_t offset = 0; + AddressType child_addressType = valobj.GetAddressTypeOfChildren(); + if (child_addressType == eAddressTypeLoad) + { +// We have the host address of our std::string +// But we need to read the pointee data from the debugged process. +ProcessSP process_sp(valobj.GetProcessSP()); +// We want to read the address from std::string, which is the first 8 bytes. +lldb::addr_t addr = data.GetAddress(); +if (!addr) +{ clayborg wrote: The `{` goes at the end of the `if` line per llvm coding guidelines https://github.com/llvm/llvm-project/pull/89110 ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [lldb] Summarize std::string's when created from data. (PR #89110)
@@ -287,8 +291,52 @@ bool lldb_private::formatters::LibStdcppStringSummaryProvider( } else return true; } break; -case eAddressTypeHost: - break; +case eAddressTypeHost: { + + DataExtractor data; + Status error; + valobj.GetData(data, error); + if (error.Fail()) +return false; + + lldb::offset_t offset = 0; + AddressType child_addressType = valobj.GetAddressTypeOfChildren(); + if (child_addressType == eAddressTypeLoad) + { +// We have the host address of our std::string +// But we need to read the pointee data from the debugged process. +ProcessSP process_sp(valobj.GetProcessSP()); +// We want to read the address from std::string, which is the first 8 bytes. +lldb::addr_t addr = data.GetAddress(); +if (!addr) +{ + stream.Printf("nullptr"); + return true; +} +std::string contents; +process_sp->ReadCStringFromMemory(addr, contents, error); +if (error.Fail()) + return false; + +stream.Printf("%s", contents.c_str()); +return true; + } + + if (child_addressType == eAddressTypeHost) + { clayborg wrote: The `{` goes at the end of the `if` line per llvm coding guidelines https://github.com/llvm/llvm-project/pull/89110 _______ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [lldb] Summarize std::string's when created from data. (PR #89110)
@@ -254,13 +254,17 @@ bool lldb_private::formatters::LibStdcppStringSummaryProvider( } else addr_of_string = valobj.GetAddressOf(scalar_is_load_addr, _type); - if (addr_of_string != LLDB_INVALID_ADDRESS) { + + // We have to check for host address here + // because GetAddressOf returns INVALID for all non load addresses. + // But we can still format strings in host memory. + if (addr_of_string != LLDB_INVALID_ADDRESS || +addr_type == eAddressTypeHost) { clayborg wrote: Why does `addr_of_string = valobj.GetAddressOf(scalar_is_load_addr, _type);` return `eAddressTypeHost` with `addr_of_string` being set to `LLDB_INVALID_ADDRESS`? https://github.com/llvm/llvm-project/pull/89110 ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[llvm-branch-commits] [llvm] [MTE] add stack frame history buffer (PR #86356)
https://github.com/fmayer updated https://github.com/llvm/llvm-project/pull/86356 >From a64c5d63a4df7f59845291ca0d634466713b1ff8 Mon Sep 17 00:00:00 2001 From: Florian Mayer Date: Fri, 29 Mar 2024 16:53:52 -0700 Subject: [PATCH 1/3] update Created using spr 1.3.4 --- llvm/lib/Target/AArch64/AArch64StackTagging.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/llvm/lib/Target/AArch64/AArch64StackTagging.cpp b/llvm/lib/Target/AArch64/AArch64StackTagging.cpp index a6e236386d5baa..6538abea832907 100644 --- a/llvm/lib/Target/AArch64/AArch64StackTagging.cpp +++ b/llvm/lib/Target/AArch64/AArch64StackTagging.cpp @@ -489,7 +489,6 @@ Instruction *AArch64StackTagging::insertBaseTaggedPointer( auto *IntptrTy = IRB.getIntPtrTy(M.getDataLayout()); Value *SlotPtr = memtag::getAndroidSlotPtr(IRB, StackMteSlot); -SlotPtr->setName("TLS_SLOT_STACK_MTE"); auto *ThreadLong = IRB.CreateLoad(IntptrTy, SlotPtr); Value *TaggedFP = IRB.CreateOr( memtag::getFP(IRB), >From 8591fb38c7e065862a0814792a368e2983b8b10c Mon Sep 17 00:00:00 2001 From: Florian Mayer Date: Mon, 29 Apr 2024 14:45:16 -0700 Subject: [PATCH 2/3] api lvl Created using spr 1.3.4 --- llvm/lib/Target/AArch64/AArch64StackTagging.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm/lib/Target/AArch64/AArch64StackTagging.cpp b/llvm/lib/Target/AArch64/AArch64StackTagging.cpp index 840635315eee04..e38cce94a5cc0b 100644 --- a/llvm/lib/Target/AArch64/AArch64StackTagging.cpp +++ b/llvm/lib/Target/AArch64/AArch64StackTagging.cpp @@ -484,7 +484,7 @@ Instruction *AArch64StackTagging::insertBaseTaggedPointer( Base->setName("basetag"); auto TargetTriple = Triple(M.getTargetTriple()); if (ClRecordStackHistory == instr && TargetTriple.isAndroid() && - TargetTriple.isAArch64() && !TargetTriple.isAndroidVersionLT(35)) { + TargetTriple.isAArch64() && !TargetTriple.isAndroidVersionLT(36)) { constexpr int StackMteSlot = -3; constexpr uint64_t TagMask = 0xFULL << 56; >From 66fbd757608c44b04d64de3f058ce813b14706fe Mon Sep 17 00:00:00 2001 From: Florian Mayer Date: Mon, 29 Apr 2024 16:00:09 -0700 Subject: [PATCH 3/3] hidden Created using spr 1.3.4 --- llvm/lib/Target/AArch64/AArch64StackTagging.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm/lib/Target/AArch64/AArch64StackTagging.cpp b/llvm/lib/Target/AArch64/AArch64StackTagging.cpp index e38cce94a5cc0b..43d82a1234f7af 100644 --- a/llvm/lib/Target/AArch64/AArch64StackTagging.cpp +++ b/llvm/lib/Target/AArch64/AArch64StackTagging.cpp @@ -102,7 +102,7 @@ static cl::opt ClRecordStackHistory( cl::values(clEnumVal(none, "Do not record stack ring history"), clEnumVal(instr, "Insert instructions into the prologue for " "storing into the stack ring buffer")), -cl::Hidden, cl::init(instr)); +cl::Hidden, cl::init(none)); static const Align kTagGranuleSize = Align(16); ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[jenkinsci/active-choices-plugin] 7070c1: Update CHANGES.md
Branch: refs/heads/master Home: https://github.com/jenkinsci/active-choices-plugin Commit: 7070c1fa5235333e3c752129b39a3f6cd18a1aff https://github.com/jenkinsci/active-choices-plugin/commit/7070c1fa5235333e3c752129b39a3f6cd18a1aff Author: Bruno P. Kinoshita Date: 2024-04-30 (Tue, 30 Apr 2024) Changed paths: M CHANGES.md Log Message: --- Update CHANGES.md To unsubscribe from these emails, change your notification settings at https://github.com/jenkinsci/active-choices-plugin/settings/notifications -- You received this message because you are subscribed to the Google Groups "Jenkins Commits" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-commits+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-commits/jenkinsci/active-choices-plugin/push/refs/heads/master/6a5762-7070c1%40github.com.
[jenkinsci/active-choices-plugin] 6a5762: Bump @babel/core from 7.24.4 to 7.24.5
Branch: refs/heads/master Home: https://github.com/jenkinsci/active-choices-plugin Commit: 6a576201605319211bc22739d005ff90681801a9 https://github.com/jenkinsci/active-choices-plugin/commit/6a576201605319211bc22739d005ff90681801a9 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: 2024-04-30 (Tue, 30 Apr 2024) Changed paths: M package.json M yarn.lock Log Message: --- Bump @babel/core from 7.24.4 to 7.24.5 Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.24.4 to 7.24.5. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.24.5/packages/babel-core) --- updated-dependencies: - dependency-name: "@babel/core" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] To unsubscribe from these emails, change your notification settings at https://github.com/jenkinsci/active-choices-plugin/settings/notifications -- You received this message because you are subscribed to the Google Groups "Jenkins Commits" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-commits+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-commits/jenkinsci/active-choices-plugin/push/refs/heads/master/c42a94-6a5762%40github.com.
[Lldb-commits] [lldb] 1b70580 - Skip various tests under ASAN on green dragon (#90531)
hs=["arm", "aarch64"]) # Randomly fails on buildbot @expectedFlakeyFreeBSD("llvm.org/pr25172 fails rarely on the buildbot") def test_batch_mode_launch_stop_at_entry(self): @@ -125,6 +128,7 @@ def closeVictim(self): self.victim.close() self.victim = None +@skipIf(macos_version=["<", "14.0"], asan=True) @skipIf(oslist=["linux"], archs=["arm", "aarch64"]) # Randomly fails on buildbot @expectedFlakeyFreeBSD("llvm.org/pr25172 fails rarely on the buildbot") @expectedFailureNetBSD diff --git a/lldb/test/API/driver/job_control/TestJobControl.py b/lldb/test/API/driver/job_control/TestJobControl.py index 1a1739f4cb391d..648acb1d4730bc 100644 --- a/lldb/test/API/driver/job_control/TestJobControl.py +++ b/lldb/test/API/driver/job_control/TestJobControl.py @@ -8,6 +8,7 @@ class JobControlTest(PExpectTest): +@skipIf(macos_version=["<", "14.0"], asan=True) @skipIf(oslist=["linux"], archs=["arm", "aarch64"]) def test_job_control(self): def post_spawn(): diff --git a/lldb/test/API/driver/quit_speed/TestQuitWithProcess.py b/lldb/test/API/driver/quit_speed/TestQuitWithProcess.py index 42527c88b99213..c75ac977ea2094 100644 --- a/lldb/test/API/driver/quit_speed/TestQuitWithProcess.py +++ b/lldb/test/API/driver/quit_speed/TestQuitWithProcess.py @@ -31,4 +31,4 @@ def test_run_quit(self): print("Got launch message") child.sendline("quit") print("sent quit") -child.expect(pexpect.EOF, timeout=15) +child.expect(pexpect.EOF, timeout=60) diff --git a/lldb/test/API/iohandler/sigint/TestProcessIOHandlerInterrupt.py b/lldb/test/API/iohandler/sigint/TestProcessIOHandlerInterrupt.py index 8e19d56cd0c2f9..75ac0f6c0289a4 100644 --- a/lldb/test/API/iohandler/sigint/TestProcessIOHandlerInterrupt.py +++ b/lldb/test/API/iohandler/sigint/TestProcessIOHandlerInterrupt.py @@ -11,6 +11,7 @@ class TestCase(PExpectTest): +@skipIf(macos_version=["<", "14.0"], asan=True) @skipIf(compiler="clang", compiler_version=["<", "11.0"]) @skipIf(oslist=["linux"], archs=["arm", "aarch64"]) def test(self): diff --git a/lldb/test/API/macosx/nslog/TestDarwinNSLogOutput.py b/lldb/test/API/macosx/nslog/TestDarwinNSLogOutput.py index 15d9feb543895a..f6bda16560b962 100644 --- a/lldb/test/API/macosx/nslog/TestDarwinNSLogOutput.py +++ b/lldb/test/API/macosx/nslog/TestDarwinNSLogOutput.py @@ -20,8 +20,6 @@ class DarwinNSLogOutputTestCase(TestBase): NO_DEBUG_INFO_TESTCASE = True -@skipUnlessDarwin -@skipIfRemote # this test is currently written using lldb commands & assumes running on local system def setUp(self): # Call super's setUp(). TestBase.setUp(self) @@ -119,6 +117,9 @@ def do_test(self, expect_regexes=None, settings_commands=None): self.runCmd("process continue") self.expect(expect_regexes) +@skipIf(oslist=["linux"], archs=["arm", "aarch64"]) +@skipUnlessDarwin +@skipIfRemote # this test is currently written using lldb commands & assumes running on local system def test_nslog_output_is_displayed(self): """Test that NSLog() output shows up in the command-line debugger.""" self.do_test( @@ -131,6 +132,9 @@ def test_nslog_output_is_displayed(self): self.assertGreater(len(self.child.match.groups()), 0) self.assertEqual("This is a message from NSLog", self.child.match.group(1)) +@skipIf(oslist=["linux"], archs=["arm", "aarch64"]) +@skipUnlessDarwin +@skipIfRemote # this test is currently written using lldb commands & assumes running on local system def test_nslog_output_is_suppressed_with_env_var(self): """Test that NSLog() output does not show up with the ignore env var.""" # This test will only work properly on macOS 10.12+. Skip it on earlier versions. diff --git a/lldb/test/API/terminal/TestSTTYBeforeAndAfter.py b/lldb/test/API/terminal/TestSTTYBeforeAndAfter.py index 21aca5fc85d5f1..313a265319dbac 100644 --- a/lldb/test/API/terminal/TestSTTYBeforeAndAfter.py +++ b/lldb/test/API/terminal/TestSTTYBeforeAndAfter.py @@ -19,6 +19,7 @@ def classCleanup(cls): cls.RemoveTempFile("child_send2.txt") cls.RemoveTempFile("child_read2.txt") +@skipIf(macos_version=["<", "14.0"], asan=True) @add_test_categories(["pexpect"]) @no_debug_info_test def test_stty_dash_a_before_and_afetr_invoking_lldb_command(self): ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [lldb] Skip various tests under ASAN on green dragon (PR #90531)
https://github.com/adrian-prantl closed https://github.com/llvm/llvm-project/pull/90531 ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[jenkinsci/parasoft-findings-plugin] f4dafb: Ignored complaint about private class DefaultResul...
Branch: refs/heads/master Home: https://github.com/jenkinsci/parasoft-findings-plugin Commit: f4dafb99b46a3c87ba09418bfd16f156fc611021 https://github.com/jenkinsci/parasoft-findings-plugin/commit/f4dafb99b46a3c87ba09418bfd16f156fc611021 Author: yshi-parasoft Date: 2024-04-29 (Mon, 29 Apr 2024) Changed paths: M pom.xml Log Message: --- Ignored complaint about private class DefaultResultsCore in UResults of utils dependency To unsubscribe from these emails, change your notification settings at https://github.com/jenkinsci/parasoft-findings-plugin/settings/notifications -- You received this message because you are subscribed to the Google Groups "Jenkins Commits" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-commits+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-commits/jenkinsci/parasoft-findings-plugin/push/refs/heads/master/9d33cc-f4dafb%40github.com.
[clang] [clang] Handle trivial_abi attribute for Microsoft ABI. (PR #88857)
@@ -1105,6 +1105,11 @@ bool MicrosoftCXXABI::hasMostDerivedReturn(GlobalDecl GD) const { static bool isTrivialForMSVC(const CXXRecordDecl *RD, QualType Ty, CodeGenModule ) { + // If the record is marked with the trivial_abi attribute, we don't + // have to conform to the standard MSVC ABI. + if (RD->hasAttr()) rnk wrote: The pseudo code version is something like: bool containsTrivialAbiSubobject(CXXRecordDecl *RD) { if (RD->hasAttr()) return true; for (auto B : RD->bases()) { if (containsTrivialAbiSubobject(B->getAsCXXRecordDecl())) return true; } for (auto F : RD->fields()) { const CXXRecordDecl* FRD = F->getType()->getAsCXXRecordDecl(); if (FRD && containsTrivialAbiSubobject(FRD)) return true; } return false; } A bit of a gross inefficient DFS, with some CXXBaseSpecifier details omitted. It might also be worth tracking Visited records to handle fields of the same record type without recursing over all subobjects again. https://github.com/llvm/llvm-project/pull/88857 _______ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[Lldb-commits] [lldb] Skip various tests under ASAN on green dragon (PR #90531)
t @expectedFlakeyFreeBSD("llvm.org/pr25172 fails rarely on the buildbot") def test_batch_mode_launch_stop_at_entry(self): @@ -125,6 +128,7 @@ def closeVictim(self): self.victim.close() self.victim = None +@skipIf(macos_version=["<", "14.0"], asan=True) @skipIf(oslist=["linux"], archs=["arm", "aarch64"]) # Randomly fails on buildbot @expectedFlakeyFreeBSD("llvm.org/pr25172 fails rarely on the buildbot") @expectedFailureNetBSD diff --git a/lldb/test/API/driver/job_control/TestJobControl.py b/lldb/test/API/driver/job_control/TestJobControl.py index 1a1739f4cb391d..648acb1d4730bc 100644 --- a/lldb/test/API/driver/job_control/TestJobControl.py +++ b/lldb/test/API/driver/job_control/TestJobControl.py @@ -8,6 +8,7 @@ class JobControlTest(PExpectTest): +@skipIf(macos_version=["<", "14.0"], asan=True) @skipIf(oslist=["linux"], archs=["arm", "aarch64"]) def test_job_control(self): def post_spawn(): diff --git a/lldb/test/API/driver/quit_speed/TestQuitWithProcess.py b/lldb/test/API/driver/quit_speed/TestQuitWithProcess.py index 42527c88b99213..c75ac977ea2094 100644 --- a/lldb/test/API/driver/quit_speed/TestQuitWithProcess.py +++ b/lldb/test/API/driver/quit_speed/TestQuitWithProcess.py @@ -31,4 +31,4 @@ def test_run_quit(self): print("Got launch message") child.sendline("quit") print("sent quit") -child.expect(pexpect.EOF, timeout=15) +child.expect(pexpect.EOF, timeout=60) diff --git a/lldb/test/API/iohandler/sigint/TestProcessIOHandlerInterrupt.py b/lldb/test/API/iohandler/sigint/TestProcessIOHandlerInterrupt.py index 8e19d56cd0c2f9..75ac0f6c0289a4 100644 --- a/lldb/test/API/iohandler/sigint/TestProcessIOHandlerInterrupt.py +++ b/lldb/test/API/iohandler/sigint/TestProcessIOHandlerInterrupt.py @@ -11,6 +11,7 @@ class TestCase(PExpectTest): +@skipIf(macos_version=["<", "14.0"], asan=True) @skipIf(compiler="clang", compiler_version=["<", "11.0"]) @skipIf(oslist=["linux"], archs=["arm", "aarch64"]) def test(self): diff --git a/lldb/test/API/macosx/nslog/TestDarwinNSLogOutput.py b/lldb/test/API/macosx/nslog/TestDarwinNSLogOutput.py index 15d9feb543895a..f6bda16560b962 100644 --- a/lldb/test/API/macosx/nslog/TestDarwinNSLogOutput.py +++ b/lldb/test/API/macosx/nslog/TestDarwinNSLogOutput.py @@ -20,8 +20,6 @@ class DarwinNSLogOutputTestCase(TestBase): NO_DEBUG_INFO_TESTCASE = True -@skipUnlessDarwin -@skipIfRemote # this test is currently written using lldb commands & assumes running on local system def setUp(self): # Call super's setUp(). TestBase.setUp(self) @@ -119,6 +117,9 @@ def do_test(self, expect_regexes=None, settings_commands=None): self.runCmd("process continue") self.expect(expect_regexes) +@skipIf(oslist=["linux"], archs=["arm", "aarch64"]) +@skipUnlessDarwin +@skipIfRemote # this test is currently written using lldb commands & assumes running on local system def test_nslog_output_is_displayed(self): """Test that NSLog() output shows up in the command-line debugger.""" self.do_test( @@ -131,6 +132,9 @@ def test_nslog_output_is_displayed(self): self.assertGreater(len(self.child.match.groups()), 0) self.assertEqual("This is a message from NSLog", self.child.match.group(1)) +@skipIf(oslist=["linux"], archs=["arm", "aarch64"]) +@skipUnlessDarwin +@skipIfRemote # this test is currently written using lldb commands & assumes running on local system def test_nslog_output_is_suppressed_with_env_var(self): """Test that NSLog() output does not show up with the ignore env var.""" # This test will only work properly on macOS 10.12+. Skip it on earlier versions. diff --git a/lldb/test/API/terminal/TestSTTYBeforeAndAfter.py b/lldb/test/API/terminal/TestSTTYBeforeAndAfter.py index 21aca5fc85d5f1..313a265319dbac 100644 --- a/lldb/test/API/terminal/TestSTTYBeforeAndAfter.py +++ b/lldb/test/API/terminal/TestSTTYBeforeAndAfter.py @@ -19,6 +19,7 @@ def classCleanup(cls): cls.RemoveTempFile("child_send2.txt") cls.RemoveTempFile("child_read2.txt") +@skipIf(macos_version=["<", "14.0"], asan=True) @add_test_categories(["pexpect"]) @no_debug_info_test def test_stty_dash_a_before_and_afetr_invoking_lldb_command(self): ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[clang] [llvm] Implement resource binding type prefix mismatch errors (PR #87578)
@@ -44,7 +44,7 @@ void foo2() { // expected-warning@+1 {{'register' attribute only applies to cbuffer/tbuffer and external global variables}} extern RWBuffer U2 : register(u5); } -// FIXME: expect-error once fix https://github.com/llvm/llvm-project/issues/57886. +// expected-error@+1 {{invalid register name prefix 'u' for 'float' (expected 't')}} bob80905 wrote: I don't have a prior example to base this off of at hand, but I think I saw some hlsl with a builtin type bound to a register and the valid prefix was 't'. To answer your question, the assignment is represented as a VarDecl, so the compiler assumes this resource is a Sampler, UAV, or SRV. Then the resource type is analyzed to see if it's a builtin (float happens to be a builtin). Then we check the binding prefix to see if it's 't', and if not, emit an error. float is a builtin type, and the prefix isn't t, so that's why this test case expects 't'. What prefix should it expect, if any? https://github.com/llvm/llvm-project/pull/87578 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[llvm-branch-commits] [clang] f341c76 - [Clang] Handle structs with inner structs and no fields (#89126)
EL: define dso_local void @_ZN3foo3barC1Ev( +// CHECK-SAME: ptr noundef nonnull align 4 dereferenceable(1) [[THIS:%.*]]) unnamed_addr #[[ATTR0:[0-9]+]] align 2 { +// CHECK-NEXT: entry: +// CHECK-NEXT:tail call void @_Z4initPvU25pass_dynamic_object_size0(ptr noundef nonnull [[THIS]], i64 noundef -1) #[[ATTR2:[0-9]+]] +// CHECK-NEXT:ret void +// +foo::bar::bar() { + init(array); +} _______ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] [Clang] Handle structs with inner structs and no fields (#89126) (PR #90133)
https://github.com/tstellar closed https://github.com/llvm/llvm-project/pull/90133 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[clang] [WebAssembly] Add preprocessor define for half-precision (PR #90528)
llvmbot wrote: @llvm/pr-subscribers-backend-webassembly @llvm/pr-subscribers-clang Author: Heejin Ahn (aheejin) Changes This adds the preprocessor define for the half-precision feature and also adds preprocessor tests. --- Full diff: https://github.com/llvm/llvm-project/pull/90528.diff 2 Files Affected: - (modified) clang/lib/Basic/Targets/WebAssembly.cpp (+2) - (modified) clang/test/Preprocessor/wasm-target-features.c (+12) ``diff diff --git a/clang/lib/Basic/Targets/WebAssembly.cpp b/clang/lib/Basic/Targets/WebAssembly.cpp index 0db7b668d8a0ac..1f0418b21c1f86 100644 --- a/clang/lib/Basic/Targets/WebAssembly.cpp +++ b/clang/lib/Basic/Targets/WebAssembly.cpp @@ -100,6 +100,8 @@ void WebAssemblyTargetInfo::getTargetDefines(const LangOptions , Builder.defineMacro("__wasm_extended_const__"); if (HasMultiMemory) Builder.defineMacro("__wasm_multimemory__"); + if (HasHalfPrecision) +Builder.defineMacro("__wasm_half_precision__"); Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1"); Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2"); diff --git a/clang/test/Preprocessor/wasm-target-features.c b/clang/test/Preprocessor/wasm-target-features.c index 19bd918543dfea..72ecc60a6e7898 100644 --- a/clang/test/Preprocessor/wasm-target-features.c +++ b/clang/test/Preprocessor/wasm-target-features.c @@ -43,6 +43,15 @@ // // EXTENDED-CONST: #define __wasm_extended_const__ 1{{$}} +// RUN: %clang -E -dM %s -o - 2>&1 \ +// RUN: -target wasm32-unknown-unknown -mhalf-precision \ +// RUN: | FileCheck %s -check-prefix=HALF-PRECISION +// RUN: %clang -E -dM %s -o - 2>&1 \ +// RUN: -target wasm64-unknown-unknown -mhalf-precision \ +// RUN: | FileCheck %s -check-prefix=HALF-PRECISION +// +// HALF-PRECISION: #define __wasm_half_precision__ 1{{$}} + // RUN: %clang -E -dM %s -o - 2>&1 \ // RUN: -target wasm32-unknown-unknown -mmultimemory \ // RUN: | FileCheck %s -check-prefix=MULTIMEMORY @@ -135,6 +144,7 @@ // MVP-NOT: #define __wasm_bulk_memory__ 1{{$}} // MVP-NOT: #define __wasm_exception_handling__ 1{{$}} // MVP-NOT: #define __wasm_extended_const__ 1{{$}} +// MVP-NOT: #define __wasm_half_precision__ 1{{$}} // MVP-NOT: #define __wasm_multimemory__ 1{{$}} // MVP-NOT: #define __wasm_multivalue__ 1{{$}} // MVP-NOT: #define __wasm_mutable_globals__ 1{{$}} @@ -168,6 +178,7 @@ // GENERIC-NOT: #define __wasm_bulk_memory__ 1{{$}} // GENERIC-NOT: #define __wasm_exception_handling__ 1{{$}} // GENERIC-NOT: #define __wasm_extended_const__ 1{{$}} +// GENERIC-NOT: #define __wasm_half_precision__ 1{{$}} // GENERIC-NOT: #define __wasm_multimemory__ 1{{$}} // GENERIC-NOT: #define __wasm_nontrapping_fptoint__ 1{{$}} // GENERIC-NOT: #define __wasm_relaxed_simd__ 1{{$}} @@ -183,6 +194,7 @@ // // BLEEDING-EDGE-INCLUDE-DAG: #define __wasm_atomics__ 1{{$}} // BLEEDING-EDGE-INCLUDE-DAG: #define __wasm_bulk_memory__ 1{{$}} +// BLEEDING-EDGE-INCLUDE-DAG: #define __wasm_half_precision__ 1{{$}} // BLEEDING-EDGE-INCLUDE-DAG: #define __wasm_multimemory__ 1{{$}} // BLEEDING-EDGE-INCLUDE-DAG: #define __wasm_multivalue__ 1{{$}} // BLEEDING-EDGE-INCLUDE-DAG: #define __wasm_mutable_globals__ 1{{$}} `` https://github.com/llvm/llvm-project/pull/90528 _______ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [WebAssembly] Add preprocessor define for half-precision (PR #90528)
aheejin wrote: cc @brendandahl (I couldn't add you as a reviewer because you didn't pop up in the reviewers list) Also, this just adds the preprocessor directive, but I'm wondering whether you really meant to add this to bleeding-edge: https://github.com/llvm/llvm-project/commit/d9fd0ddef38bb9d5cce7300ff820272183c09fcd#r141495634 https://github.com/llvm/llvm-project/pull/90528 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [OpenMP][TR12] change property of map-type modifier. (PR #90499)
https://github.com/jyu2-git edited https://github.com/llvm/llvm-project/pull/90499 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [WebAssembly] Add preprocessor define for half-precision (PR #90528)
https://github.com/aheejin created https://github.com/llvm/llvm-project/pull/90528 This adds the preprocessor define for the half-precision feature and also adds preprocessor tests. >From 036d8a7486eab8ee2b434826c6ad5807daba2574 Mon Sep 17 00:00:00 2001 From: Heejin Ahn Date: Mon, 29 Apr 2024 22:02:52 + Subject: [PATCH] [WebAssembly] Add preprocessor define for half-precision This adds the preprocessor define for the half-precision feature and also adds preprocessor tests. --- clang/lib/Basic/Targets/WebAssembly.cpp| 2 ++ clang/test/Preprocessor/wasm-target-features.c | 12 2 files changed, 14 insertions(+) diff --git a/clang/lib/Basic/Targets/WebAssembly.cpp b/clang/lib/Basic/Targets/WebAssembly.cpp index 0db7b668d8a0ac..1f0418b21c1f86 100644 --- a/clang/lib/Basic/Targets/WebAssembly.cpp +++ b/clang/lib/Basic/Targets/WebAssembly.cpp @@ -100,6 +100,8 @@ void WebAssemblyTargetInfo::getTargetDefines(const LangOptions , Builder.defineMacro("__wasm_extended_const__"); if (HasMultiMemory) Builder.defineMacro("__wasm_multimemory__"); + if (HasHalfPrecision) +Builder.defineMacro("__wasm_half_precision__"); Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1"); Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2"); diff --git a/clang/test/Preprocessor/wasm-target-features.c b/clang/test/Preprocessor/wasm-target-features.c index 19bd918543dfea..72ecc60a6e7898 100644 --- a/clang/test/Preprocessor/wasm-target-features.c +++ b/clang/test/Preprocessor/wasm-target-features.c @@ -43,6 +43,15 @@ // // EXTENDED-CONST: #define __wasm_extended_const__ 1{{$}} +// RUN: %clang -E -dM %s -o - 2>&1 \ +// RUN: -target wasm32-unknown-unknown -mhalf-precision \ +// RUN: | FileCheck %s -check-prefix=HALF-PRECISION +// RUN: %clang -E -dM %s -o - 2>&1 \ +// RUN: -target wasm64-unknown-unknown -mhalf-precision \ +// RUN: | FileCheck %s -check-prefix=HALF-PRECISION +// +// HALF-PRECISION: #define __wasm_half_precision__ 1{{$}} + // RUN: %clang -E -dM %s -o - 2>&1 \ // RUN: -target wasm32-unknown-unknown -mmultimemory \ // RUN: | FileCheck %s -check-prefix=MULTIMEMORY @@ -135,6 +144,7 @@ // MVP-NOT: #define __wasm_bulk_memory__ 1{{$}} // MVP-NOT: #define __wasm_exception_handling__ 1{{$}} // MVP-NOT: #define __wasm_extended_const__ 1{{$}} +// MVP-NOT: #define __wasm_half_precision__ 1{{$}} // MVP-NOT: #define __wasm_multimemory__ 1{{$}} // MVP-NOT: #define __wasm_multivalue__ 1{{$}} // MVP-NOT: #define __wasm_mutable_globals__ 1{{$}} @@ -168,6 +178,7 @@ // GENERIC-NOT: #define __wasm_bulk_memory__ 1{{$}} // GENERIC-NOT: #define __wasm_exception_handling__ 1{{$}} // GENERIC-NOT: #define __wasm_extended_const__ 1{{$}} +// GENERIC-NOT: #define __wasm_half_precision__ 1{{$}} // GENERIC-NOT: #define __wasm_multimemory__ 1{{$}} // GENERIC-NOT: #define __wasm_nontrapping_fptoint__ 1{{$}} // GENERIC-NOT: #define __wasm_relaxed_simd__ 1{{$}} @@ -183,6 +194,7 @@ // // BLEEDING-EDGE-INCLUDE-DAG: #define __wasm_atomics__ 1{{$}} // BLEEDING-EDGE-INCLUDE-DAG: #define __wasm_bulk_memory__ 1{{$}} +// BLEEDING-EDGE-INCLUDE-DAG: #define __wasm_half_precision__ 1{{$}} // BLEEDING-EDGE-INCLUDE-DAG: #define __wasm_multimemory__ 1{{$}} // BLEEDING-EDGE-INCLUDE-DAG: #define __wasm_multivalue__ 1{{$}} // BLEEDING-EDGE-INCLUDE-DAG: #define __wasm_mutable_globals__ 1{{$}} _______ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[llvm-branch-commits] [clang] [Clang] Handle structs with inner structs and no fields (#89126) (PR #90133)
bar { +int array[]; +bar(); + }; +}; + +void init(void * __attribute__((pass_dynamic_object_size(0; + +// CHECK-LABEL: define dso_local void @_ZN3foo3barC1Ev( +// CHECK-SAME: ptr noundef nonnull align 4 dereferenceable(1) [[THIS:%.*]]) unnamed_addr #[[ATTR0:[0-9]+]] align 2 { +// CHECK-NEXT: entry: +// CHECK-NEXT:tail call void @_Z4initPvU25pass_dynamic_object_size0(ptr noundef nonnull [[THIS]], i64 noundef -1) #[[ATTR2:[0-9]+]] +// CHECK-NEXT:ret void +// +foo::bar::bar() { + init(array); +} _______ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [llvm] abf6b13 - [IRCE] Skip icmp ptr in `InductiveRangeCheck::parseRangeCheckICmp` (#89967)
Author: Yingwei Zheng Date: 2024-04-29T15:47:28-07:00 New Revision: abf6b13085fbffe6d0384420d9bf562e2f1698c8 URL: https://github.com/llvm/llvm-project/commit/abf6b13085fbffe6d0384420d9bf562e2f1698c8 DIFF: https://github.com/llvm/llvm-project/commit/abf6b13085fbffe6d0384420d9bf562e2f1698c8.diff LOG: [IRCE] Skip icmp ptr in `InductiveRangeCheck::parseRangeCheckICmp` (#89967) Fixes https://github.com/llvm/llvm-project/issues/89959. (cherry picked from commit 22da5a6e34ed6146752b24d9156a678b50fddaef) Added: llvm/test/Transforms/IRCE/pr89959.ll Modified: llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp Removed: diff --git a/llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp b/llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp index 9df28747570c4d..104e8ceb796700 100644 --- a/llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp +++ b/llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp @@ -279,6 +279,9 @@ bool InductiveRangeCheck::parseRangeCheckICmp(Loop *L, ICmpInst *ICI, Value *LHS = ICI->getOperand(0); Value *RHS = ICI->getOperand(1); + if (!LHS->getType()->isIntegerTy()) +return false; + // Canonicalize to the `Index Pred Invariant` comparison if (IsLoopInvariant(LHS)) { std::swap(LHS, RHS); diff --git a/llvm/test/Transforms/IRCE/pr89959.ll b/llvm/test/Transforms/IRCE/pr89959.ll new file mode 100644 index 00..dc7c0dfbc57a97 --- /dev/null +++ b/llvm/test/Transforms/IRCE/pr89959.ll @@ -0,0 +1,33 @@ +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4 +; RUN: opt -passes=irce -S < %s 2>&1 | FileCheck %s + +; Make sure we don't crash. +define void @pr89959() { +; CHECK-LABEL: define void @pr89959() { +; CHECK-NEXT: top: +; CHECK-NEXT:br label [[L3:%.*]] +; CHECK: L3: +; CHECK-NEXT:[[VALUE_PHI:%.*]] = phi ptr [ null, [[TOP:%.*]] ], [ [[TMP0:%.*]], [[L13:%.*]] ] +; CHECK-NEXT:[[TMP0]] = getelementptr i8, ptr [[VALUE_PHI]], i64 8 +; CHECK-NEXT:[[DOTNOT:%.*]] = icmp ule ptr [[VALUE_PHI]], null +; CHECK-NEXT:br i1 [[DOTNOT]], label [[L13]], label [[L15:%.*]] +; CHECK: L13: +; CHECK-NEXT:br label [[L3]] +; CHECK: L15: +; CHECK-NEXT:ret void +; +top: + br label %L3 + +L3: + %value_phi = phi ptr [ null, %top ], [ %0, %L13 ] + %0 = getelementptr i8, ptr %value_phi, i64 8 + %.not = icmp ule ptr %value_phi, null + br i1 %.not, label %L13, label %L15 + +L13: + br label %L3 + +L15: + ret void +} _______ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [llvm] release/18.x: [IRCE] Skip icmp ptr in `InductiveRangeCheck::parseRangeCheckICmp` (#89967) (PR #90182)
https://github.com/tstellar closed https://github.com/llvm/llvm-project/pull/90182 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [llvm] release/18.x: [IRCE] Skip icmp ptr in `InductiveRangeCheck::parseRangeCheckICmp` (#89967) (PR #90182)
https://github.com/tstellar updated https://github.com/llvm/llvm-project/pull/90182 >From abf6b13085fbffe6d0384420d9bf562e2f1698c8 Mon Sep 17 00:00:00 2001 From: Yingwei Zheng Date: Fri, 26 Apr 2024 16:25:33 +0800 Subject: [PATCH] [IRCE] Skip icmp ptr in `InductiveRangeCheck::parseRangeCheckICmp` (#89967) Fixes https://github.com/llvm/llvm-project/issues/89959. (cherry picked from commit 22da5a6e34ed6146752b24d9156a678b50fddaef) --- .../Scalar/InductiveRangeCheckElimination.cpp | 3 ++ llvm/test/Transforms/IRCE/pr89959.ll | 33 +++ 2 files changed, 36 insertions(+) create mode 100644 llvm/test/Transforms/IRCE/pr89959.ll diff --git a/llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp b/llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp index 9df28747570c4d..104e8ceb796700 100644 --- a/llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp +++ b/llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp @@ -279,6 +279,9 @@ bool InductiveRangeCheck::parseRangeCheckICmp(Loop *L, ICmpInst *ICI, Value *LHS = ICI->getOperand(0); Value *RHS = ICI->getOperand(1); + if (!LHS->getType()->isIntegerTy()) +return false; + // Canonicalize to the `Index Pred Invariant` comparison if (IsLoopInvariant(LHS)) { std::swap(LHS, RHS); diff --git a/llvm/test/Transforms/IRCE/pr89959.ll b/llvm/test/Transforms/IRCE/pr89959.ll new file mode 100644 index 00..dc7c0dfbc57a97 --- /dev/null +++ b/llvm/test/Transforms/IRCE/pr89959.ll @@ -0,0 +1,33 @@ +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4 +; RUN: opt -passes=irce -S < %s 2>&1 | FileCheck %s + +; Make sure we don't crash. +define void @pr89959() { +; CHECK-LABEL: define void @pr89959() { +; CHECK-NEXT: top: +; CHECK-NEXT:br label [[L3:%.*]] +; CHECK: L3: +; CHECK-NEXT:[[VALUE_PHI:%.*]] = phi ptr [ null, [[TOP:%.*]] ], [ [[TMP0:%.*]], [[L13:%.*]] ] +; CHECK-NEXT:[[TMP0]] = getelementptr i8, ptr [[VALUE_PHI]], i64 8 +; CHECK-NEXT:[[DOTNOT:%.*]] = icmp ule ptr [[VALUE_PHI]], null +; CHECK-NEXT:br i1 [[DOTNOT]], label [[L13]], label [[L15:%.*]] +; CHECK: L13: +; CHECK-NEXT:br label [[L3]] +; CHECK: L15: +; CHECK-NEXT:ret void +; +top: + br label %L3 + +L3: + %value_phi = phi ptr [ null, %top ], [ %0, %L13 ] + %0 = getelementptr i8, ptr %value_phi, i64 8 + %.not = icmp ule ptr %value_phi, null + br i1 %.not, label %L13, label %L15 + +L13: + br label %L3 + +L15: + ret void +} _______ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[Lldb-commits] [lldb] Skip various tests under ASAN on green dragon (PR #90531)
github-actions[bot] wrote: :warning: Python code formatter, darker found issues in your code. :warning: You can test this locally with the following command: ``bash darker --check --diff -r 975eca0e6a3459e59e96b0df33ea0cfbd157c597...46d19cc3211fa6e27f7e49238777e533c0a173bc lldb/packages/Python/lldbsuite/test/decorators.py lldb/test/API/driver/batch_mode/TestBatchMode.py lldb/test/API/driver/job_control/TestJobControl.py lldb/test/API/driver/quit_speed/TestQuitWithProcess.py lldb/test/API/iohandler/sigint/TestProcessIOHandlerInterrupt.py lldb/test/API/macosx/nslog/TestDarwinNSLogOutput.py lldb/test/API/terminal/TestSTTYBeforeAndAfter.py `` View the diff from darker here. ``diff --- packages/Python/lldbsuite/test/decorators.py2024-04-29 22:38:25.00 + +++ packages/Python/lldbsuite/test/decorators.py2024-04-29 22:46:41.105318 + @@ -373,11 +373,11 @@ py_version=None, macos_version=None, remote=None, dwarf_version=None, setting=None, -asan=None +asan=None, ): return _decorateTest( DecorateMode.Skip, bugnumber=bugnumber, oslist=oslist, @@ -391,11 +391,11 @@ py_version=py_version, macos_version=macos_version, remote=remote, dwarf_version=dwarf_version, setting=setting, -asan=asan +asan=asan, ) def _skip_fn_for_android(reason, api_levels, archs): def impl(): `` https://github.com/llvm/llvm-project/pull/90531 ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[llvm-branch-commits] [clang] ee5bb0c - Fix Objective-C++ Sret of non-trivial data types on Windows ARM64 (#88671)
m64.mm @@ -0,0 +1,77 @@ +// RUN: %clang_cc1 -triple aarch64-pc-windows-msvc -fobjc-runtime=gnustep-2.2 -fobjc-dispatch-method=non-legacy -emit-llvm -o - %s | FileCheck %s + +// Pass and return for type size <= 8 bytes. +struct S1 { + int a[2]; +}; + +// Pass and return hfa <= 8 bytes +struct F1 { + float a[2]; +}; + +// Pass and return for type size > 16 bytes. +struct S2 { + int a[5]; +}; + +// Pass and return aggregate (of size < 16 bytes) with non-trivial destructor. +// Sret and inreg: Returned in x0 +struct S3 { + int a[3]; + ~S3(); +}; +S3::~S3() { +} + + +@interface MsgTest { id isa; } @end +@implementation MsgTest +- (S1) smallS1 { + S1 x; + x.a[0] = 0; + x.a[1] = 1; + return x; + +} +- (F1) smallF1 { + F1 x; + x.a[0] = 0.2f; + x.a[1] = 0.5f; + return x; +} +- (S2) stretS2 { + S2 x; + for (int i = 0; i < 5; i++) { +x.a[i] = i; + } + return x; +} +- (S3) stretInRegS3 { + S3 x; + for (int i = 0; i < 3; i++) { +x.a[i] = i; + } + return x; +} ++ (S3) msgTestStretInRegS3 { + S3 x; + for (int i = 0; i < 3; i++) { +x.a[i] = i; + } + return x; +} +@end + +void test0(MsgTest *t) { +// CHECK: call {{.*}} @objc_msgSend +S1 ret = [t smallS1]; +// CHECK: call {{.*}} @objc_msgSend +F1 ret2 = [t smallF1]; +// CHECK: call {{.*}} @objc_msgSend_stret +S2 ret3 = [t stretS2]; +// CHECK: call {{.*}} @objc_msgSend_stret2 +S3 ret4 = [t stretInRegS3]; +// CHECK: call {{.*}} @objc_msgSend_stret2 + S3 ret5 = [MsgTest msgTestStretInRegS3]; +} ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[Lldb-commits] [lldb] Skip various tests under ASAN on green dragon (PR #90531)
https://github.com/JDevlieghere approved this pull request. https://github.com/llvm/llvm-project/pull/90531 ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits