[clang-tools-extra] [clang-tidy][C++20] Add support for Initialization Forwarding in Nested Objects (PR #131969)

2025-03-28 Thread Baranov Victor via cfe-commits
https://github.com/vbvictor edited https://github.com/llvm/llvm-project/pull/131969 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [llvm] [RISC-V] extra andi instruction when loading a bool atomically #131476 (PR #133406)

2025-03-28 Thread via cfe-commits
Jan =?utf-8?q?Górski?= , Jan =?utf-8?q?Górski?= , Jan =?utf-8?q?Górski?= , Jan =?utf-8?q?Górski?= Message-ID: In-Reply-To: github-actions[bot] wrote: Thank you for submitting a Pull Request (PR) to the LLVM Project! This PR will be automatically labeled and the relevant teams will be notifi

[clang] [clang] Fix the crash when dumping deserialized decls (PR #133395)

2025-03-28 Thread Ilya Biryukov via cfe-commits
https://github.com/ilya-biryukov requested changes to this pull request. There are two parts to this patch: 1. forwarding more methods properly 2. updating the interface, adding new callbacks and changing the behavior of `-dump-deserialized-decls`` I think (1) is a no-brainer. I would be very

[clang] [clang] Fix the crash when dumping deserialized decls (PR #133395)

2025-03-28 Thread Ilya Biryukov via cfe-commits
@@ -103,15 +120,30 @@ class DeserializedDeclsDumper : public DelegatingDeserializationListener { : DelegatingDeserializationListener(Previous, DeletePrevious) {} void DeclRead(GlobalDeclID ID, const Decl *D) override { -llvm::outs() << "PCH DECL: " << D->getDeclKi

[clang] [clang] Fix the crash when dumping deserialized decls (PR #133395)

2025-03-28 Thread Ilya Biryukov via cfe-commits
https://github.com/ilya-biryukov edited https://github.com/llvm/llvm-project/pull/133395 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [clang] Fix the crash when dumping deserialized decls (PR #133395)

2025-03-28 Thread Ilya Biryukov via cfe-commits
@@ -57,6 +59,8 @@ class ASTDeserializationListener { /// A module import was read from the AST file. virtual void ModuleImportRead(serialization::SubmoduleID ID, SourceLocation ImportLoc) {} + /// The deserialization of the AST file was fini

[clang-tools-extra] [clang-tidy][C++20] Add support for Initialization Forwarding in Nested Objects (PR #131969)

2025-03-28 Thread Baranov Victor via cfe-commits
@@ -305,6 +320,38 @@ void UseEmplaceCheck::registerMatchers(MatchFinder *Finder) { this); } +const Expr *unwrapInnerExpression(const Expr *E) { + + while (true) { vbvictor wrote: you could write `while(E)` and get rid of if ```cpp if (!E) break; ```

[clang-tools-extra] [clang-tidy][C++20] Add support for Initialization Forwarding in Nested Objects (PR #131969)

2025-03-28 Thread Baranov Victor via cfe-commits
@@ -332,19 +380,44 @@ void UseEmplaceCheck::check(const MatchFinder::MatchResult &Result) { }(); assert(Call && "No call matched"); - assert((CtorCall || MakeCall) && "No push_back parameter matched"); + assert((CtorCall || MakeCall || AggInitCall) && + "No push

[clang] [CIR] Upstream SelectOp and ShiftOp (PR #133405)

2025-03-28 Thread Morris Hafner via cfe-commits
https://github.com/mmha created https://github.com/llvm/llvm-project/pull/133405 Since SelectOp will only generated by a future pass that transforms a TernaryOp this only includes the lowering bits. This patch also improves the testing of the existing binary operators. >From fc549133df0092c9c2

[clang] [clang] Fix the crash when dumping deserialized decls (PR #133395)

2025-03-28 Thread Ilya Biryukov via cfe-commits
@@ -27,6 +27,8 @@ class MacroInfo; class Module; class SourceLocation; +// IMPORTANT: when you add a new interface to this class, please update the +// DelegatingDeserializationListener in FrontendAction.cpp ilya-biryukov wrote: Future idea: maybe we could mo

[clang] [clang] Fix the crash when dumping deserialized decls (PR #133395)

2025-03-28 Thread Haojian Wu via cfe-commits
https://github.com/hokein ready_for_review https://github.com/llvm/llvm-project/pull/133395 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [NFC] Fix a typo in StdLibraryFunctionsChecker.cpp comments (PR #133375)

2025-03-28 Thread Balazs Benics via cfe-commits
https://github.com/steakhal approved this pull request. https://github.com/llvm/llvm-project/pull/133375 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [CIR] Upstream SelectOp and ShiftOp (PR #133405)

2025-03-28 Thread Morris Hafner via cfe-commits
mmha wrote: cc @andykaylor @erichkeane @dkolsen-pgi https://github.com/llvm/llvm-project/pull/133405 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [clang] Fix the crash when dumping deserialized decls (PR #133395)

2025-03-28 Thread Haojian Wu via cfe-commits
hokein wrote: > There are two parts to this patch: > > 1. forwarding more methods properly > 2. updating the interface, adding new callbacks and changing the behavior of > `-dump-deserialized-decls`` > > I think (1) is a no-brainer. I would be very eager to LGTM it right away, but > could you

[clang] [clang] Fix the crash when dumping deserialized decls (PR #133395)

2025-03-28 Thread Haojian Wu via cfe-commits
@@ -57,6 +59,8 @@ class ASTDeserializationListener { /// A module import was read from the AST file. virtual void ModuleImportRead(serialization::SubmoduleID ID, SourceLocation ImportLoc) {} + /// The deserialization of the AST file was fini

[clang-tools-extra] [clang-tidy][C++20] Add support for Initialization Forwarding in Nested Objects (PR #131969)

2025-03-28 Thread Baranov Victor via cfe-commits
https://github.com/vbvictor edited https://github.com/llvm/llvm-project/pull/131969 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang-tools-extra] [clang-tidy][C++20] Add support for Initialization Forwarding in Nested Objects (PR #131969)

2025-03-28 Thread Baranov Victor via cfe-commits
@@ -1289,7 +1305,11 @@ void testBracedInitTemporaries() { v2.push_back(NonTrivialWithVector{{0}}); v2.push_back({{0}}); v2.push_back(NonTrivialWithVector{std::vector{0}}); + // CHECK-MESSAGES-CPP20: :[[@LINE-1]]:6: warning: use emplace_back instead of push_back

[clang] [clang] Fix the crash when dumping deserialized decls (PR #133395)

2025-03-28 Thread Haojian Wu via cfe-commits
@@ -103,15 +120,30 @@ class DeserializedDeclsDumper : public DelegatingDeserializationListener { : DelegatingDeserializationListener(Previous, DeletePrevious) {} void DeclRead(GlobalDeclID ID, const Decl *D) override { -llvm::outs() << "PCH DECL: " << D->getDeclKi

[clang] [Clang][WIP][RFC] Bypass TAD during overload resolution if a perfect match exists (PR #133426)

2025-03-28 Thread via cfe-commits
https://github.com/cor3ntin created https://github.com/llvm/llvm-project/pull/133426 This implements the same overload resolution behavior as GCC, as described in https://wg21.link/p3606 (sections 1-2, not 3) If, during overload resolution, a non-template candidate is always picked because e

[clang] [Clang][WIP][RFC] Bypass TAD during overload resolution if a perfect match exists (PR #133426)

2025-03-28 Thread via cfe-commits
cor3ntin wrote: I'd love feedback on the general design but I'll do a lot of code changes/renames/commenting/testing/etc so no need to nitpick (yet!) https://github.com/llvm/llvm-project/pull/133426 ___ cfe-commits mailing list cfe-commits@lists.llvm.

[clang] 50d4ae4 - [analyzer] Fix format attribute handling in GenericTaintChecker (#132765)

2025-03-28 Thread via cfe-commits
Author: Donát Nagy Date: 2025-03-28T10:20:26+01:00 New Revision: 50d4ae4a62fb22e5e03a6150baaf80e4bb4f2d41 URL: https://github.com/llvm/llvm-project/commit/50d4ae4a62fb22e5e03a6150baaf80e4bb4f2d41 DIFF: https://github.com/llvm/llvm-project/commit/50d4ae4a62fb22e5e03a6150baaf80e4bb4f2d41.diff LO

[clang] [WIP] Fix the crash when dump the deserialized decl (PR #133395)

2025-03-28 Thread Haojian Wu via cfe-commits
https://github.com/hokein updated https://github.com/llvm/llvm-project/pull/133395 >From 228f45851d9c0c6b5b08aa725b6c53704d71630a Mon Sep 17 00:00:00 2001 From: Haojian Wu Date: Fri, 28 Mar 2025 09:32:50 +0100 Subject: [PATCH] Fix the crash when dumping the deserialized decls --- clang/docs/R

[clang] [WIP] Fix the crash when dump the deserialized decl (PR #133395)

2025-03-28 Thread Haojian Wu via cfe-commits
https://github.com/hokein updated https://github.com/llvm/llvm-project/pull/133395 >From 517f66dd11729a833ea64350622d2a10d83c2c3b Mon Sep 17 00:00:00 2001 From: Haojian Wu Date: Fri, 28 Mar 2025 09:32:50 +0100 Subject: [PATCH] Fix the crash when dumping the deserialized decls --- clang/docs/R

[clang] [RISCV] Implement Clang Builtins for XCVmac Extension in CV32E40P (PR #110623)

2025-03-28 Thread via cfe-commits
https://github.com/realqhc updated https://github.com/llvm/llvm-project/pull/110623 >From da8b2fc0b5815f5870efe650ba5d585ec14e1a08 Mon Sep 17 00:00:00 2001 From: Qihan Cai Date: Tue, 1 Oct 2024 12:14:15 +1000 Subject: [PATCH 1/5] [RISCV] Implement Clang Builtins for XCVmac Extension in CV32E40

[clang] [Serialization] Fix lazy template loading (PR #133057)

2025-03-28 Thread Jonas Hahnfeld via cfe-commits
hahnjo wrote: > Maybe you can test it with this and land it with different patches. So that > we can revert one of them if either of them are problematic but other parts > are fine. I'm ok with pushing the commits one-by-one after the PR is reviewed, just let me know. > > Complete only neede

[clang] [clang][AST] Fix end location of DeclarationNameInfo on instantiated methods (PR #92654)

2025-03-28 Thread via cfe-commits
Abramo-Bagnara wrote: @alejandro-alvarez-sonarsource @steakhal This breaks the type info loaded correctly in previous decl instantiation: ``` template struct s { operator T(); return 0; } }; void f() { s x; (int)x; } ``` In this case the instantiated conversion DeclarationNameIn

[clang] [analyzer] Add metrics tracking time spent in Z3 solver (PR #133236)

2025-03-28 Thread Donát Nagy via cfe-commits
https://github.com/NagyDonat approved this pull request. LGTM. I'm a bit surprised to see that you're excluding the retries from this measurement (I feel that measuring the total time would be a more "natural" statistic), but if you're interested in this information, then there is no reason t

[clang] [Serialization] Fix lazy template loading (PR #133057)

2025-03-28 Thread Chuanqi Xu via cfe-commits
ChuanqiXu9 wrote: > > Maybe you can test it with this and land it with different patches. So that > > we can revert one of them if either of them are problematic but other parts > > are fine. > > I'm ok with pushing the commits one-by-one after the PR is reviewed, just let > me know. > > > >

[clang] [RFC][clang] Handle friend function that was a definition but became only a declaration during AST deserialization (PR #132214)

2025-03-28 Thread Dmitry Polukhin via cfe-commits
https://github.com/dmpolukhin updated https://github.com/llvm/llvm-project/pull/132214 >From 91e057bf990e2c454b897982ed0b4e823bb3faba Mon Sep 17 00:00:00 2001 From: Dmitry Polukhin Date: Thu, 20 Mar 2025 06:51:46 -0700 Subject: [PATCH 1/6] [clang] Fix for regression #130917 Changes in #111992

[clang] [Clang] [NFC] Introduce helpers for defining compatibilty warnings (PR #132129)

2025-03-28 Thread via cfe-commits
@@ -155,6 +155,38 @@ class DefaultWarnNoWerror { } class DefaultRemark { Severity DefaultSeverity = SEV_Remark; } +// C++ compatibility warnings. +multiclass CXXCompat< +string message, +int std_ver, +bit ext_warn = true, +string std_ver_override = ""#std_ver>

[clang] db04c3e - [clang] Implement some missing interfaces for DelegatingDeserializationListener (#133424)

2025-03-28 Thread via cfe-commits
Author: Haojian Wu Date: 2025-03-28T15:31:21+01:00 New Revision: db04c3e4b3d9b79d99c5bbeb7fffaa887cd4352e URL: https://github.com/llvm/llvm-project/commit/db04c3e4b3d9b79d99c5bbeb7fffaa887cd4352e DIFF: https://github.com/llvm/llvm-project/commit/db04c3e4b3d9b79d99c5bbeb7fffaa887cd4352e.diff LO

[clang] [clang] Implement some missing interfaces for DelegatingDeserializationListener (PR #133424)

2025-03-28 Thread Haojian Wu via cfe-commits
https://github.com/hokein closed https://github.com/llvm/llvm-project/pull/133424 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [clang][Sema] Fix typo in 'offsetof' diagnostics (PR #133448)

2025-03-28 Thread Michael Buch via cfe-commits
https://github.com/Michael137 created https://github.com/llvm/llvm-project/pull/133448 Before: ``` offset of on non-POD type ``` After: ``` offsetof on non-POD type ``` >From 732a9b611bb4b6c49a0b4bf1d616870ffa051d8f Mon Sep 17 00:00:00 2001 From: Michael Buch Date: Fri, 28 Mar 2025 13:29:27 +0

[clang] [clang][Sema] Fix typo in 'offsetof' diagnostics (PR #133448)

2025-03-28 Thread via cfe-commits
llvmbot wrote: @llvm/pr-subscribers-clang Author: Michael Buch (Michael137) Changes Before: ``` offset of on non-POD type ``` After: ``` offsetof on non-POD type ``` --- Full diff: https://github.com/llvm/llvm-project/pull/133448.diff 4 Files Affected: - (modified) clang/include/clang/

[clang] [clang-format] add option to control bin-packing keyworded parameters (PR #131605)

2025-03-28 Thread Eugene Shalygin via cfe-commits
@@ -3146,6 +3146,45 @@ struct FormatStyle { /// \version 16 IntegerLiteralSeparatorStyle IntegerLiteralSeparator; + /// Function-like declaration with keyworded parameters. + /// Lists possible keywords for a named macro-like function + struct KeywordedFunctionLikeMacro

[clang] [clang-format] add option to control bin-packing keyworded parameters (PR #131605)

2025-03-28 Thread Eugene Shalygin via cfe-commits
@@ -3146,6 +3146,45 @@ struct FormatStyle { /// \version 16 IntegerLiteralSeparatorStyle IntegerLiteralSeparator; + /// Function-like declaration with keyworded parameters. + /// Lists possible keywords for a named macro-like function zeule wrote: Lists

[clang] [compiler-rt] [flang] [libc] [libcxx] [llvm] [Clang][AMDGPU] Remove special handling for COV4 libraries (PR #132870)

2025-03-28 Thread Joseph Huber via cfe-commits
https://github.com/jhuber6 updated https://github.com/llvm/llvm-project/pull/132870 >From e2bd8c7e4f741fa29f24bdee9073ccf4afecf381 Mon Sep 17 00:00:00 2001 From: Joseph Huber Date: Mon, 24 Mar 2025 22:36:04 -0500 Subject: [PATCH] [Clang][AMDGPU] Remove special handling for COV4 libraries Summa

[clang] [clang] Fix the crash when dumping deserialized decls (PR #133395)

2025-03-28 Thread Ilya Biryukov via cfe-commits
@@ -57,6 +59,8 @@ class ASTDeserializationListener { /// A module import was read from the AST file. virtual void ModuleImportRead(serialization::SubmoduleID ID, SourceLocation ImportLoc) {} + /// The deserialization of the AST file was fini

[clang] 316bb89 - [Driver] Enable LLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON on AIX. (#132821)

2025-03-28 Thread via cfe-commits
Author: Daniel Chen Date: 2025-03-28T09:22:02-04:00 New Revision: 316bb89c942c1a1cf61d3e673030f82d6f0b8acf URL: https://github.com/llvm/llvm-project/commit/316bb89c942c1a1cf61d3e673030f82d6f0b8acf DIFF: https://github.com/llvm/llvm-project/commit/316bb89c942c1a1cf61d3e673030f82d6f0b8acf.diff L

[clang] [Driver] Enable LLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON on AIX. (PR #132821)

2025-03-28 Thread Daniel Chen via cfe-commits
https://github.com/DanielCChen closed https://github.com/llvm/llvm-project/pull/132821 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] Add more tests for _Countof (PR #133333)

2025-03-28 Thread Alejandro Colomar via cfe-commits
@@ -102,6 +126,11 @@ void test_unspecified_array_length() { static_assert(_Countof(**x) == 3); } +void test_completed_array() { + int a[] = {1, 2, global_num}; + static_assert(_Countof(a) == 3); alejandro-colomar wrote: @AaronBallman This test seems to ha

[clang] Add more tests for _Countof (PR #133333)

2025-03-28 Thread Alejandro Colomar via cfe-commits
https://github.com/alejandro-colomar edited https://github.com/llvm/llvm-project/pull/13 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] Unknown array lvalue element (PR #133381)

2025-03-28 Thread Balazs Benics via cfe-commits
https://github.com/steakhal edited https://github.com/llvm/llvm-project/pull/133381 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [analyzer] Unknown array lvalue element in Store (PR #133381)

2025-03-28 Thread Balazs Benics via cfe-commits
https://github.com/steakhal edited https://github.com/llvm/llvm-project/pull/133381 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [clang][modules] Guard against bad -fmodule-file mappings (#132059) (PR #133462)

2025-03-28 Thread Naveen Seth Hanig via cfe-commits
https://github.com/naveen-seth updated https://github.com/llvm/llvm-project/pull/133462 >From cfbc14d381b5daed70ca812daac9ceed0039b5f6 Mon Sep 17 00:00:00 2001 From: naveen-seth Date: Fri, 28 Mar 2025 06:59:06 +0100 Subject: [PATCH] [clang][modules] Guard against bad -fmodule-file mappings (#1

[clang] [clang-tools-extra] [clang] Do not share ownership of `PreprocessorOptions` (PR #133467)

2025-03-28 Thread Ben Langmuir via cfe-commits
benlangmuir wrote: Are you planning to do the same for LangOpts and HSOpts? What's the ultimate goal here? There's also this comment on `CompilerInvocationBase`: ``` /// ... It keeps individual option objects /// behind reference-counted pointers, which is useful for clients that want to /// ke

[clang] [flang] [llvm] [AMDGPU] Use a target feature to enable __builtin_amdgcn_global_load_lds on gfx9/10 (PR #133055)

2025-03-28 Thread Shilei Tian via cfe-commits
Juan Manuel Martinez =?utf-8?q?Caama=C3=B1o?= , Juan Manuel Martinez =?utf-8?q?Caama=C3=B1o?= Message-ID: In-Reply-To: @@ -0,0 +1,45 @@ +; RUN: split-file %s %t shiltian wrote: This is an interesting thing that I learned from this PR. :-) https://github.com/l

[clang] [HIP] Claim `--offload-compress` for `-M` (PR #133456)

2025-03-28 Thread Yaxun Liu via cfe-commits
@@ -1026,6 +1026,12 @@ void Clang::AddPreprocessingOptions(Compilation &C, const JobAction &JA, CmdArgs.push_back("-dependency-file"); CmdArgs.push_back(DepFile); } +// Cmake generates dependency files using all compilation options specified +// by user

[clang] Unknown array lvalue element (PR #133381)

2025-03-28 Thread Balazs Benics via cfe-commits
@@ -0,0 +1,146 @@ +//===- LValueElementTest.cpp ---===// steakhal wrote: I agree, we should see if we can properly test this in the list tests, as you proposed already. https://github.com/llvm/llvm-project/pull/133381 ___

[clang] e70fe9b - NFC: fix typo in clang/test/AST/ast-dump-templates.cpp

2025-03-28 Thread Matheus Izvekov via cfe-commits
Author: Matheus Izvekov Date: 2025-03-28T14:39:11-03:00 New Revision: e70fe9b264b6f98fd3744b514d7166f75dd19872 URL: https://github.com/llvm/llvm-project/commit/e70fe9b264b6f98fd3744b514d7166f75dd19872 DIFF: https://github.com/llvm/llvm-project/commit/e70fe9b264b6f98fd3744b514d7166f75dd19872.dif

[clang] [clang][modules] Guard against bad -fmodule-file mappings (#132059) (PR #133462)

2025-03-28 Thread Naveen Seth Hanig via cfe-commits
https://github.com/naveen-seth edited https://github.com/llvm/llvm-project/pull/133462 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [clang][modules] Guard against bad -fmodule-file mappings (#132059) (PR #133462)

2025-03-28 Thread Naveen Seth Hanig via cfe-commits
https://github.com/naveen-seth updated https://github.com/llvm/llvm-project/pull/133462 >From 804617c3083935d10f98b10e86f965e7508eb587 Mon Sep 17 00:00:00 2001 From: naveen-seth Date: Fri, 28 Mar 2025 06:59:06 +0100 Subject: [PATCH] [clang][modules] Guard against bad -fmodule-file mappings (#1

[clang] [HLSL] Add SPIR-V target type for RWStructuredBuffers (PR #133468)

2025-03-28 Thread Nathan Gauër via cfe-commits
https://github.com/Keenuts edited https://github.com/llvm/llvm-project/pull/133468 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [HIP] use offload wrapper for non-device-only non-rdc (PR #132869)

2025-03-28 Thread Yaxun Liu via cfe-commits
https://github.com/yxsamliu updated https://github.com/llvm/llvm-project/pull/132869 >From 205999ed91d9ed65dcfb73377f853ae7e35a7bda Mon Sep 17 00:00:00 2001 From: "Yaxun (Sam) Liu" Date: Fri, 21 Mar 2025 14:16:44 -0400 Subject: [PATCH] [HIP] use offload wrapper for non-device-only non-rdc Curr

[clang] 277ab85 - [clang] Make `PreprocessorOptions` reference const

2025-03-28 Thread Jan Svoboda via cfe-commits
Author: Jan Svoboda Date: 2025-03-28T09:34:19-07:00 New Revision: 277ab85d1ccf80750f5193495c0665808c2863de URL: https://github.com/llvm/llvm-project/commit/277ab85d1ccf80750f5193495c0665808c2863de DIFF: https://github.com/llvm/llvm-project/commit/277ab85d1ccf80750f5193495c0665808c2863de.diff L

<    1   2   3   4   5