LLVM/project a23bf51llvm/lib/Transforms/Scalar SROA.cpp, llvm/test/Transforms/SROA vector-promotion-rmw-tree-merge.ll vector-promotion-rmw-cannot-tree-merge.ll

[SROA] Extend tree-structured merge to handle init + RMW pattern (#194441)

## Problem

When SROA rewrites an alloca used as a read-modify-write accumulator, it
emits a linear chain of `shufflevector + select` per partial store.
`InstCombine`'s `SimplifyDemandedVectorElts` walks this chain
recursively per element, scaling quadratically with chain length — in
practice tens of seconds of compile time on some matmul kernels.

## Example

Take an `<8 x float>` alloca initialized once and then updated in 4
chunks of 2 elements each:

```llvm
%alloca = alloca <8 x float>
store <8 x float> %init, ptr %alloca                       ; full init


    [104 lines not shown]
DeltaFile
+355-139llvm/lib/Transforms/Scalar/SROA.cpp
+326-0llvm/test/Transforms/SROA/vector-promotion-rmw-tree-merge.ll
+153-0llvm/test/Transforms/SROA/vector-promotion-rmw-cannot-tree-merge.ll
+834-1393 files

LLVM/project 9764954llvm/include/llvm/Target TargetSelectionDAG.td, llvm/lib/Target/X86 X86InstrFragmentsSIMD.td X86InstrAVX512.td

[X86] Extend alignedstore PatFrag to cover atomic_store
DeltaFile
+86-0llvm/test/CodeGen/X86/atomic-load-store.ll
+4-2llvm/lib/Target/X86/X86InstrFragmentsSIMD.td
+3-2llvm/lib/Target/X86/X86InstrAVX512.td
+1-1llvm/include/llvm/Target/TargetSelectionDAG.td
+94-54 files

LLVM/project a0e2743llvm/utils/gn/secondary/lldb/test BUILD.gn

[gn] port 639556c9f690 (#204227)
DeltaFile
+1-0llvm/utils/gn/secondary/lldb/test/BUILD.gn
+1-01 files

LLVM/project 39bec9cllvm/lib/Target/RISCV RISCVInstrInfoVPseudos.td

[RISCV] Rename VPseudoTernaryMaskPolicy->VPseudoReductionMaskPolicy. NFC (#204053)

This makes it clearer why this class doesn't set UsesMaskPolicy and can
prevent accidental misuse in the future.
DeltaFile
+23-24llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td
+23-241 files

LLVM/project ed37c72clang/lib/CodeGen CodeGenModule.cpp, clang/test/CodeGen ptrauth-module-flags.c ubsan-function-sugared.cpp

[PAC][clang] Fix ptrauth module flags behavior

The `Error` merge behavior only has effect when module flags values
mismatch, while it allows the flag being present in one module and
absent in another one.

Always emit `ptrauth-elf-got` module flag for AArch64 targets and
`ptrauth-sign-personality` module flag for AArch64 Linux targets.
The value is either 0 or 1.
DeltaFile
+7-5clang/lib/CodeGen/CodeGenModule.cpp
+10-2clang/test/CodeGen/ptrauth-module-flags.c
+2-2clang/test/CodeGenCXX/pfp-memcpy.cpp
+1-1clang/test/CodeGen/ubsan-function-sugared.cpp
+1-1clang/test/CodeGen/ubsan-function.cpp
+21-115 files

LLVM/project 5a49c56clang/include/clang/AST OpenMPClause.h, clang/lib/Sema SemaOpenMP.cpp

[OpenMP] Introduce the ompx_name clause for kernel naming

This adds support for the ompx_name clause that allows users to specify
custom kernel names for OpenMP target offloading regions. The clause
accepts a string literal and overrides the default compiler-generated
kernel names.

Example usage:
  #pragma omp target ompx_name("my_kernel")
  { ... }

Kernel names need to be unique or they are diagnosed at compile or link
time as errors.

Co-Authored-By: Claude (claude-sonnet-4.5) <noreply at anthropic.com>
DeltaFile
+78-0offload/test/offloading/ompx_name.c
+62-0clang/test/OpenMP/ompx_name_messages_errors.cpp
+53-0clang/test/OpenMP/ompx_name_codegen.cpp
+40-0offload/test/offloading/ompx_name_duplicate_link.c
+36-0clang/lib/Sema/SemaOpenMP.cpp
+33-0clang/include/clang/AST/OpenMPClause.h
+302-014 files not shown
+415-920 files

LLVM/project 642e8b6clang/test/OpenMP target_codegen.cpp target_simd_codegen.cpp, llvm/include/llvm/Frontend/Offloading Utility.h

[OpenMP] Use ext linkage for kernels handles and globals handles keep linkage

Host handles are now emmitted with external linkage to clash if two
kernels with the same name are registered. This could have happen right
now and silently corrupt the program, but it can happen more easily once
we allow users to name their kernels.

In the same patch we make global variable handles retain the linkage of
the global variable, forcing clashes for external ones and continue to
support weak use cases.
DeltaFile
+11-11clang/test/OpenMP/target_codegen.cpp
+8-8clang/test/OpenMP/target_simd_codegen.cpp
+8-8mlir/test/Target/LLVMIR/omptarget-declare-target-llvm-host.mlir
+7-6llvm/lib/Frontend/Offloading/Utility.cpp
+4-4llvm/include/llvm/Frontend/Offloading/Utility.h
+4-4clang/test/OpenMP/target_indirect_codegen.cpp
+42-4114 files not shown
+70-6820 files

LLVM/project a0e4588llvm/lib/Target/RISCV RISCVInstrInfoXqci.td RISCVInstrInfo.td

[RISC-V] Rename GPRMem operand to BasePtr. NFC

This is in preparation for https://github.com/llvm/llvm-project/pull/177073
where these operands can refer to either a GPR or YGPR depending on the
current HwMode. Since this is the base pointer operand of the load/store
instruction, BasePtr was chosen as the name.

Pull Request: https://github.com/llvm/llvm-project/pull/204215
DeltaFile
+34-34llvm/lib/Target/RISCV/RISCVInstrInfoXqci.td
+7-7llvm/lib/Target/RISCV/RISCVInstrInfo.td
+3-3llvm/lib/Target/RISCV/RISCVInstrInfoXCV.td
+2-2llvm/lib/Target/RISCV/RISCVInstrInfoF.td
+1-1llvm/lib/Target/RISCV/RISCVInstrInfoZicbo.td
+47-475 files

LLVM/project c7fbd7ecompiler-rt/lib/xray xray_trampoline_hexagon.S

[XRay][Hexagon] Use PC-rel addressing for runtime globals in trampoline (#203122)

The trampolines load the runtime handler globals
(__xray::XRayPatchedFunction and friends) with absolute
constant-extended immediates, which cannot be used in a PIC/PIE link, so
linking a default-PIE executable against the xray runtime fails -- and
-fPIC on user code does not help, the bad relocations are inside the
runtime archive:

  ld.lld: error: relocation R_HEX_32_6_X cannot be used against symbol
  '__xray::XRayPatchedFunction'; recompile with -fPIC
DeltaFile
+3-3compiler-rt/lib/xray/xray_trampoline_hexagon.S
+3-31 files

LLVM/project 30f73c9compiler-rt/lib/xray xray_hexagon.cpp

[XRay][Hexagon] Fix immext encoding of high bits in sled patcher (#203129)

encodeConstantExtender() places the high 12 bits of the 26-bit extension
at the wrong offset (<<16 instead of <<2), dropping them for any
constant above ~2^20. The runtime sled patcher then encodes a corrupted
trampoline address for PIE executables (load base 0x08000000+), so the
first patched function call jumps to a bogus address and crashes.
DeltaFile
+5-1compiler-rt/lib/xray/xray_hexagon.cpp
+5-11 files

LLVM/project 52027edflang/lib/Lower OpenACC.cpp, flang/test/Lower/OpenACC/Todo acc-unstructured-loop-construct.f90 acc-unstructured-combined-construct.f90

[OpenACC] Add emit-independent-loops-as-unstructured flag (#204080)
DeltaFile
+32-5flang/test/Lower/OpenACC/Todo/acc-unstructured-loop-construct.f90
+23-3flang/test/Lower/OpenACC/Todo/acc-unstructured-combined-construct.f90
+11-2flang/lib/Lower/OpenACC.cpp
+66-103 files

LLVM/project eb63d31llvm/lib/Transforms/Instrumentation MemorySanitizer.cpp, llvm/test/Instrumentation/MemorySanitizer/AArch64 arm64-vcvt.ll arm64-vcvt_f32_su32.ll

Revert "[msan] Apply handleGenericVectorConvertIntrinsic() to fptrunc/fpext" (#204221)

Reverts llvm/llvm-project#204197 due to buildbot failure
(https://lab.llvm.org/buildbot/#/builders/51/builds/38557)
DeltaFile
+13-14llvm/test/Instrumentation/MemorySanitizer/i386/vararg_shadow.ll
+13-14llvm/test/Instrumentation/MemorySanitizer/X86/vararg_shadow.ll
+6-15llvm/test/Instrumentation/MemorySanitizer/X86/f16c-intrinsics-upgrade.ll
+8-10llvm/test/Instrumentation/MemorySanitizer/AArch64/arm64-vcvt.ll
+4-8llvm/test/Instrumentation/MemorySanitizer/AArch64/arm64-vcvt_f32_su32.ll
+3-9llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
+47-701 files not shown
+48-727 files

LLVM/project 7e5bc4cllvm/test/CodeGen/Generic/GlobalISel irtranslator-byte-type.ll

[IRTranslator] Precommit tests for bitcasts of the byte type (#203638)

The purpose of this commit is to reflect differences due to PR #203335.
DeltaFile
+497-0llvm/test/CodeGen/Generic/GlobalISel/irtranslator-byte-type.ll
+497-01 files

LLVM/project b0191cdllvm/lib/Passes PassBuilderPipelines.cpp, llvm/test/Other new-pm-defaults.ll new-pm-thinlto-postlink-defaults.ll

Revert "Revert "[DFAJumpThreading] Enable DFAJumpThread by default." (#167352)"

This reverts commit 7e04336.

Change-Id: I37e7ca5d871e1df4ccfa81e43b97361be1d7878a
DeltaFile
+1-1llvm/lib/Passes/PassBuilderPipelines.cpp
+1-0llvm/test/Other/new-pm-defaults.ll
+1-0llvm/test/Other/new-pm-thinlto-postlink-defaults.ll
+1-0llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll
+1-0llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll
+1-0llvm/test/Other/new-pm-thinlto-prelink-defaults.ll
+6-12 files not shown
+8-18 files

LLVM/project 4e200a7clang/include/clang/Options Options.td, clang/lib/Driver/ToolChains Clang.cpp

[Driver][DirectX] Add /Qembed_debug and /Fd flags
DeltaFile
+30-40llvm/lib/Target/DirectX/DXContainerGlobals.cpp
+38-0llvm/test/CodeGen/DirectX/ContainerData/ContainerFlags.ll
+18-9clang/include/clang/Options/Options.td
+22-3clang/lib/Driver/ToolChains/Clang.cpp
+22-0llvm/test/CodeGen/DirectX/ContainerData/DebugName.test
+15-2clang/test/Driver/dxc_debug.hlsl
+145-5413 files not shown
+207-6719 files

LLVM/project 5ef3d70llvm/include/llvm/MC MCDXContainerWriter.h, llvm/lib/MC MCDXContainerWriter.cpp

[DirectX] Generate PDB file with debug info (#202762)

This change adds DXContainerPDB pass for DirectX pipeline.
The pass creates PDB file containing sections with shader debug
information. PDB files comply with the format used by existing DirectX
debugging tools.

---------

Co-authored-by: Vladislav Dzhidzhoev <vdzhidzhoev at accesssoftek.com>
DeltaFile
+158-0llvm/lib/Target/DirectX/DXContainerPDB.cpp
+41-20llvm/lib/MC/MCDXContainerWriter.cpp
+39-1llvm/include/llvm/MC/MCDXContainerWriter.h
+37-0llvm/lib/Target/DirectX/DXContainerGlobals.cpp
+26-0llvm/test/CodeGen/DirectX/ContainerData/PDBParts.ll
+25-0llvm/test/CodeGen/DirectX/ContainerData/Inputs/check_pdb_exists.py
+326-218 files not shown
+397-2214 files

LLVM/project c9b2cfcflang/include/flang/Support Fortran-features.h, flang/lib/Semantics check-do-forall.cpp check-do-forall.h

[flang][Semantics] Warn on repeated do-variable in nested I/O implied DO (#198757)

Fixes #198528

Add a warning when an io-implied-do's do-variable appears as, or is
associated with, the do-variable of a containing io-implied-do. This
diagnoses violations of Fortran 2023 12.6.3p7:
>The do-variable of an io-implied-do that is in another io-implied-do
shall not appear as, nor be associated with, the do-variable of the
containing io-implied-do.

Since this is not a constraint, a warning is emitted rather than an
error. As suggested in the associated issue, the warning is on by
default and can be suppressed with `-Wno-io-implied-do-index-conflict`.

The check detects:

- Direct name reuse (same symbol in inner and outer implied DO)
- Association via EQUIVALENCE

    [14 lines not shown]
DeltaFile
+60-6flang/lib/Semantics/check-do-forall.cpp
+64-0flang/test/Semantics/io-implied-do01.f90
+4-0flang/lib/Semantics/check-do-forall.h
+1-1flang/include/flang/Support/Fortran-features.h
+1-0flang/lib/Support/Fortran-features.cpp
+130-75 files

LLVM/project a85441clldb/unittests/Protocol MCPPluginTest.cpp ProtocolMCPTest.cpp

[lldb] Add unit tests for the MCP server (#202752)

Add unit-test coverage for the MCP protocol types and server under
source/Protocol/MCP and the MCP plugin under
source/Plugins/Protocol/MCP.

The Server handlers run over the in-memory TestTransport, which gains
SimulateError/SimulateClosed/SetRegisterMessageHandlerShouldFail helpers
to drive the handler lifecycle without a real socket.

Code that touches the filesystem or otherwise requires mucking with the
test environment are deliberately left uncovered until those layers can
be mocked.

Assisted-by: Claude
DeltaFile
+414-0lldb/unittests/Protocol/MCPPluginTest.cpp
+392-0lldb/unittests/Protocol/ProtocolMCPTest.cpp
+161-0lldb/unittests/Protocol/ProtocolMCPServerTest.cpp
+73-0lldb/unittests/Protocol/MCPErrorTest.cpp
+40-0lldb/unittests/Protocol/MCPServerInfoTest.cpp
+40-0lldb/unittests/Protocol/MCPTransportTest.cpp
+1,120-02 files not shown
+1,161-08 files

LLVM/project d6d8e23clang/include/clang/Options Options.td, clang/lib/Driver/ToolChains Clang.cpp

[Driver][DirectX] Add /Qembed_debug and /Fd flags
DeltaFile
+30-40llvm/lib/Target/DirectX/DXContainerGlobals.cpp
+38-0llvm/test/CodeGen/DirectX/ContainerData/ContainerFlags.ll
+18-9clang/include/clang/Options/Options.td
+22-3clang/lib/Driver/ToolChains/Clang.cpp
+22-0llvm/test/CodeGen/DirectX/ContainerData/DebugName.test
+15-2clang/test/Driver/dxc_debug.hlsl
+145-5413 files not shown
+207-6719 files

LLVM/project 881eac3lldb/test/API/tools/lldb-server main.cpp

[lldb] Strip code pointers in lldb-server test binary on arm64e (#203988)

Otherwise an unstripped pointer will be sent to debugserver. LLDB strips
pointers before sending them to debugserver, so debugserver does not
know how to handle it.

This fixes TestGdbRemoteSingleStep.py, TestGdbRemote_qMemoryRegion.py,
and TestGdbRemote_vCont.py on arm64e.
DeltaFile
+3-0lldb/test/API/tools/lldb-server/main.cpp
+3-01 files

LLVM/project 1db458elldb/test/API/tools/lldb-server TestLldbGdbServer.py

[lldb] Fix TestLldbGdbServer.py on arm64e (#203995)
DeltaFile
+1-1lldb/test/API/tools/lldb-server/TestLldbGdbServer.py
+1-11 files

LLVM/project f8f1878llvm/test/CodeGen/AMDGPU memory-legalizer-local-workgroup.ll memory-legalizer-private-singlethread.ll

AMDGPU: Replace tgsplit subtarget feature with attribute

This is a per-entrypoint property and has a corresponding
assembler directive, so it should not be baked into the
subtarget. I couldn't find much documentation on what this
actually does, so the description isn't great.

Fixes #204149

Co-authored-by: Claude Opus 4.6 <noreply at anthropic.com>
DeltaFile
+96-94llvm/test/CodeGen/AMDGPU/memory-legalizer-local-workgroup.ll
+96-94llvm/test/CodeGen/AMDGPU/memory-legalizer-private-singlethread.ll
+96-94llvm/test/CodeGen/AMDGPU/memory-legalizer-private-workgroup.ll
+96-94llvm/test/CodeGen/AMDGPU/memory-legalizer-private-wavefront.ll
+96-94llvm/test/CodeGen/AMDGPU/memory-legalizer-flat-singlethread.ll
+96-94llvm/test/CodeGen/AMDGPU/memory-legalizer-flat-system.ll
+576-56441 files not shown
+2,539-2,44347 files

LLVM/project 4a6a80ellvm/lib/Target/RISCV RISCVInstrInfoXqci.td RISCVInstrInfo.td

[𝘀𝗽𝗿] initial version

Created using spr 1.3.8-beta.1
DeltaFile
+34-34llvm/lib/Target/RISCV/RISCVInstrInfoXqci.td
+7-7llvm/lib/Target/RISCV/RISCVInstrInfo.td
+3-3llvm/lib/Target/RISCV/RISCVInstrInfoXCV.td
+2-2llvm/lib/Target/RISCV/RISCVInstrInfoF.td
+1-1llvm/lib/Target/RISCV/RISCVInstrInfoZicbo.td
+47-475 files

LLVM/project b8d2524mlir/lib/Dialect/Arith/IR InferIntRangeInterfaceImpls.cpp, mlir/test/Dialect/Arith int-range-narrowing.mlir

[mlir][arith] Fix crash in ConstantOp range inference for zero-element constants (#204180)

arith::ConstantOp::inferResultRanges computes the union of element
ranges by iterating a DenseIntElementsAttr. For a zero-element constant
(e.g. ) the loop body never runs,
leaving the std::optional result unset.

-> This fixes #202531
DeltaFile
+8-0mlir/test/Dialect/Arith/int-range-narrowing.mlir
+3-1mlir/lib/Dialect/Arith/IR/InferIntRangeInterfaceImpls.cpp
+11-12 files

LLVM/project cd8fe2aclang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat TUSummaryEncoding.cpp TUSummary.cpp, clang/unittests/ScalableStaticAnalysisFramework EntityLinkerTest.cpp

Revert "[clang][ssaf] Track target triple in TU and LU summaries. (#204027)" (#204207)

This reverts commit a084633edf331f75412f966bc46cc1b35462c519.
DeltaFile
+1-24clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/TUSummaryEncoding.cpp
+1-24clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/TUSummary.cpp
+1-24clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/LUSummaryEncoding.cpp
+1-24clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/LUSummary.cpp
+9-12clang/unittests/ScalableStaticAnalysisFramework/EntityLinkerTest.cpp
+0-16clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/JSONFormatImpl.cpp
+13-124169 files not shown
+175-565175 files

LLVM/project b029323llvm/lib/Target/AArch64 AArch64PerfectShuffle.cpp AArch64PerfectShuffle.h, llvm/test/CodeGen/AMDGPU llvm.amdgcn.mfma.scale.f32.32x32x64.f8f6f4.ll

Merge branch 'main' into users/kparzysz/m02-locator-frontend
DeltaFile
+7,323-0llvm/test/CodeGen/X86/fptosi-sat-vector-512.ll
+6,583-0llvm/lib/Target/AArch64/AArch64PerfectShuffle.cpp
+3-6,571llvm/lib/Target/AArch64/AArch64PerfectShuffle.h
+6,132-0llvm/test/CodeGen/X86/fptoui-sat-vector-512.ll
+5,788-1llvm/test/CodeGen/AMDGPU/llvm.amdgcn.mfma.scale.f32.32x32x64.f8f6f4.ll
+4,289-1,259llvm/test/CodeGen/X86/fptosi-sat-vector-128.ll
+30,118-7,831931 files not shown
+67,991-15,422937 files

LLVM/project 0e9c156llvm/lib/Target/AMDGPU GCNHazardRecognizer.cpp

Fix formatting

Change-Id: I6c8a76520c627ad4ca167516c28ca7358d486bc0
DeltaFile
+4-3llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
+4-31 files

LLVM/project f0c6b34llvm/lib/Transforms/Vectorize SLPVectorizer.cpp

[SLP][NFC] Fix compile-time hang in isMaskedLoadCompress

For a large gathered-load cluster LoadVecTy spans hundreds of vector
registers and the shuffle cost query blows up in processShuffleMasks.
The shuffle cost is non-negative, so bail out before computing it when
VectorGEPCost + LoadCost already reaches GatherCost (not profitable).

Fixes #204163

Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/204211
DeltaFile
+8-0llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+8-01 files

LLVM/project 51f9997mlir/lib/Dialect/SCF/Transforms ParallelLoopFusion.cpp, mlir/test/Dialect/SCF parallel-loop-fusion.mlir

[MLIR][SCF] Support permutation-based parallel loop fusion (#203207)

Improve SCF parallel-loop fusion for loops with permuted iteration
spaces.

  Allow fusion after rewriting the second loop using an arbitrary
  permutation of its iteration space. When multiple axes have identical
  bounds and steps, also enumerate additional candidate remaps for those
  equal axes.
DeltaFile
+394-0mlir/test/Dialect/SCF/parallel-loop-fusion.mlir
+239-55mlir/lib/Dialect/SCF/Transforms/ParallelLoopFusion.cpp
+633-552 files

LLVM/project cc059a3llvm/lib/Transforms/Instrumentation MemorySanitizer.cpp, llvm/test/Instrumentation/MemorySanitizer/AArch64 arm64-vcvt.ll arm64-vcvt_f32_su32.ll

[msan] Apply handleGenericVectorConvertIntrinsic() to fptrunc/fpext (#204197)

The current instrumentation uses handleShadowOr(), which effectively
truncates or zero-extends the shadows for fptrunc/fpext respectively;
this is overly lax because floating-point has both mantissa and exponent
components (e.g., if the mantissa is initialized but the exponent is
uninitialized, an fptrunc might end up with a fully initialized shadow,
which is incorrect; conversely, if a floating-point value is fully
uninitialized, we want the fpext'ed shadow to be fully uninitialized,
not zero-extended). This patch strengthens the instrumentation of
fptrunc/fpext by using handleGenericVectorConvertIntrinsic(), which
applies an "all-or-nothing" approach to uninitialized bits of each
scalar.

Note: https://github.com/llvm/llvm-project/pull/203903 auto-upgraded
aarch64_neon_vcvtfp2hf and aarch64_neon_vcvthf2fp to fptrunc and fpext,
which had the effect of weakening MSan's instrumentation for those NEON
intrinsics. This patch restores the stronger instrumentation for them
(and also generalizes it to all instances of fptrunc and fpext).
DeltaFile
+14-13llvm/test/Instrumentation/MemorySanitizer/X86/vararg_shadow.ll
+14-13llvm/test/Instrumentation/MemorySanitizer/i386/vararg_shadow.ll
+15-6llvm/test/Instrumentation/MemorySanitizer/X86/f16c-intrinsics-upgrade.ll
+10-8llvm/test/Instrumentation/MemorySanitizer/AArch64/arm64-vcvt.ll
+8-4llvm/test/Instrumentation/MemorySanitizer/AArch64/arm64-vcvt_f32_su32.ll
+9-3llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
+70-471 files not shown
+72-487 files