Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[clang] Add flag to experiment with cold function attributes #88793

Closed
wants to merge 301 commits into from
Closed
Changes from 1 commit
Commits
Show all changes
301 commits
Select commit Hold shift + click to select a range
5a46123
Fix missing dtor in function calls accepting trivial ABI structs (#88…
usx95 Apr 16, 2024
9141e1c
[clang][Interp] Gracefully handle bitcasts to non-primitive types
tbaederr Apr 12, 2024
4fc0a99
[AMDGPU] Fix implicit operands of VOPD cndmask instructions (#87788)
jayfoad Apr 16, 2024
f4f772c
[AMDGPU] Stop reserving $vcc_hi in wave32 mode (#87783)
jayfoad Apr 16, 2024
485d556
[clang][Interp][NFC] Add Block::dump()
tbaederr Apr 13, 2024
80fce05
[InstCombine] Fold `minmax (X & NegPow2C, Y & NegPow2C) -> minmax(X, …
dtcxzyw Apr 16, 2024
cce026b
[mlir][test] Fix -Wsign-compare in TestDialect.cpp (NFC)
DamonFool Apr 16, 2024
58b49ce
[clang][Interp] Support __builtin_vectorelements
tbaederr Apr 13, 2024
70fe6ad
[MLIR][OpenMP] Make omp.distribute into a loop wrapper (#87239)
skatrak Apr 16, 2024
668a58b
[flang][runtime] Add ACCESS library procedure (#88517)
tblah Apr 16, 2024
76782e2
[Flang][OpenMP] NFC: Remove old reduction lowering code (#88798)
kiranchandramohan Apr 16, 2024
61717c1
[Verifier] Reject va_start in non-variadic function (#88809)
JonChesterfield Apr 16, 2024
1ca6b44
[mlir][scf] `scf.while` uplifting: optimize op matching (#88813)
Hardcode84 Apr 16, 2024
aae08f4
[MLIR][OpenMP] Make omp.taskloop into a loop wrapper (#87253)
skatrak Apr 16, 2024
ca4cf97
[clang][Interp][NFC] Fix Pointer::isZero() for block pointers
tbaederr Apr 15, 2024
422bf13
[AMDGPU] In VectorLegalizer::Expand, if UnrollVectorOp returns Load, …
choikwa Apr 16, 2024
4dd5180
[Flang][OpenMP][Lower] Split MLIR codegen for clauses and constructs …
skatrak Apr 16, 2024
31424be
[clang][Interp][NFC] Compare std::optionals directly
tbaederr Apr 15, 2024
a831c54
[clang][Interp] Avoid calling invalid functions
tbaederr Apr 15, 2024
b0194d2
[SEH] Ignore async exception flag when the environment is not MSVC (#…
phoebewang Apr 16, 2024
f4960da
Revert "[Verifier] Reject va_start in non-variadic function (#88809)"
JonChesterfield Apr 16, 2024
01f7989
[LoongArch] Use R_LARCH_ALIGN with section symbol (#84741)
MQ-mengqing Apr 16, 2024
c09384e
[clang][Interp] Support MemberExprs pointing to VarDecls
tbaederr Apr 15, 2024
1120d8e
[clang][CodeGen] Add AS for Globals to SPIR & SPIRV datalayouts (#88455)
AlexVlx Apr 16, 2024
36b3c26
[JumpThreading] Thread over BB with only an unconditional branch (#86…
XChy Apr 16, 2024
32b74ca
[clang][Interp] Load value from MemberExpr if required
tbaederr Apr 15, 2024
92e96c7
[X86][GISel] Add DU chain lookups for LOAD & STORE (#87453)
MalaySanghi Apr 16, 2024
ac6b4c6
Reapply "[Verifier] Reject va_start in non-variadic function (#88809)"
JonChesterfield Apr 16, 2024
09e7d75
[clang][Interp] Don't add 'in call to' diagnostics for builtin frames
tbaederr Apr 16, 2024
a8de3ee
[clang][Interp][NFC] Fix some build warnings
tbaederr Apr 16, 2024
c18a3b6
[DAG] Fold extract_subvector(insert_subvector(x,y,c1),c2) --> extract…
RKSimon Apr 16, 2024
71b9f66
[clang][Index] Use canonical function parameter types in USRs (#68222)
sdkrystian Apr 16, 2024
dadcaf8
[mlir][ArmSME] Support decomposing constant splats into ArmSME tiles …
MacDue Apr 16, 2024
711df7b
[vector][mlir] Restrict vector.shuffle to fixed-width vectors (#88733)
banach-space Apr 16, 2024
75244a1
[clang][Interp] Implement align builtins
tbaederr Apr 16, 2024
91dd844
Recommit [RISCV] RISCV vector calling convention (2/2) (#79096) (#87736)
4vtomat Apr 16, 2024
ac1f2de
[MLIR][docs] Mention declarePromisedInterface in Interfaces doc (#88689)
frederik-h Apr 16, 2024
1c076b4
[mlir][tosa] Implement dynamic shape support for tosa.max_pool2d lowe…
sabauma Apr 16, 2024
d4602a9
[gn] port fe48bf672e1ab2
nico Apr 16, 2024
c309dc6
[Clang][Sema] placement new initializes typedef array with correct si…
mahtohappy Apr 16, 2024
34013e7
[X86] Add shuffle tests for BLEND(PERMUTE(X),PERMUTE(Y)) patterns
RKSimon Apr 16, 2024
b73476c
[SLP] Make sure MinVF is a power-of-2 by using PowerOf2Ceil.
fhahn Apr 16, 2024
e272c37
clang; Try to get windows-seh-async-verify.cpp to pass on mac
nico Apr 16, 2024
f69ded0
[clang] Introduce `SemaOpenMP` (#88642)
Endilll Apr 16, 2024
9e7aab9
[CUDA] Rename SM_32 to SM_32_ to work around AIX headers (#88779)
jhuber6 Apr 16, 2024
e7fb49c
Switch release notes links to using markup for github issues; NFC
AaronBallman Apr 16, 2024
9d8be24
Revert "[codegen] Emit missing cleanups for stmt-expr and coro suspen…
usx95 Apr 16, 2024
9ce74d6
[AMDGPU][CodeGen] Improve handling of memcpy for -Os/-Oz compilations…
shiltian Apr 16, 2024
6ab5927
[SLP][NFC]Add a test with the incorrect vectorization of smax with un…
alexey-bataev Apr 16, 2024
26ebe16
[SLP]Fix PR88834: check if unsigned arg can be trunced, being used in…
alexey-bataev Apr 16, 2024
e185978
[VectorCombine][X86] Regenerate shuffle.ll + shuffle-of-casts.ll
RKSimon Apr 16, 2024
e84b2fb
[LV][NFCI]Use integer for cost/trip count calculations instead of dou…
alexey-bataev Apr 16, 2024
254df2e
[VectorCombine][X86] shuffle-of-binops.ll - split off foldShuffleOfBi…
RKSimon Apr 16, 2024
6133878
[OpenACC] Implement `self` clause for compute constructs (#88760)
erichkeane Apr 16, 2024
ac79188
[bazel] Add missing dependency for 1c076b43c294c7d29d99dd50f6853b33a5…
d0k Apr 16, 2024
a0f8191
[libclc] Give built bytecode objects a .bc extension. NFC
frasercrmck Apr 16, 2024
3d118f9
[libclc] Fix dependencies between targets
frasercrmck Apr 16, 2024
60de56c
[ValueTracking] Restore isKnownNonZero parameter order. (#88873)
hvdijk Apr 16, 2024
5a34ff1
fix Polynomial.td doc filename (#88900)
j2kun Apr 16, 2024
b632476
[AST][RecoveryExpr] Fix a crash on c89/c90 invalid InitListExpr (#880…
danix800 Apr 16, 2024
d2d4a1b
Revert "[JumpThreading] Thread over BB with only an unconditional bra…
XChy Apr 16, 2024
22629bb
[libc++] Use availability to rely on key functions for bad_expected_a…
ldionne Apr 16, 2024
9ddedf0
[libc++] Deprecate the C++20 synchronization library before C++20 (#8…
ldionne Apr 16, 2024
bd28889
[RISCV] Add coverage for strength reduction of mul 2^N +/- 3/5/9
preames Apr 16, 2024
1334c03
[flang] Fix test after 4078afc6d23e25df6baedad61b224ef86a94d42f
kparzysz Apr 16, 2024
bf1ad1d
[VectorCombine][X86] Add initial shuffle-of-shuffles.ll test cover fo…
RKSimon Apr 16, 2024
f8e2ec1
Revert "Add asan tests for libsanitizers. (#88349)"
adrian-prantl Apr 16, 2024
8cee94e
[RISCV] Fix obvious copy paste error.
hvdijk Apr 16, 2024
51b42b7
Revert "[Sema] Mark alias/ifunc targets used and consider mangled nam…
joker-eph Apr 16, 2024
9d11128
[libclc] Improve clarity of CMake foreach. NFC.
frasercrmck Apr 16, 2024
2704eba
[flang][runtime] Create CUDA PTX OBJECT library target for F18 runtim…
vzakhari Apr 16, 2024
a79783d
[libc][fenv] Use proxy header (#88787)
robincaloudis Apr 16, 2024
38895e6
[libc][fenv] Remove unnecessary dependencies (#88788)
robincaloudis Apr 16, 2024
1c6b0f7
[RemoveDI] Add support for debug records to debugify (#87383)
SLTozer Apr 16, 2024
45eabd1
[flang,test] Add -resource-dir option to msvc-dependent-lib-flags.f90…
wzssyqa Apr 16, 2024
22e6bf7
[unused-includes][Serialization] Remove unused includes. NFC. (#88790)
vsapsai Apr 16, 2024
b566810
[unused-includes] PCHContainerOperations uses MemoryBufferRef, not Me…
vsapsai Apr 16, 2024
454d449
[OpenMP] Use a memory fence before incrementing the dispatch buffer i…
xingxue-ibm Apr 16, 2024
22bba85
[OpenMP][test][AIX] Make 64 the max number of threads for capacity te…
xingxue-ibm Apr 16, 2024
8137bd9
[memprof] Use CSId to construct MemProfRecord (#88362)
kazutakahirata Apr 16, 2024
8cd8ebe
[MLGO] Use double comparison facilities for reg alloc scoring tests (…
boomanaiden154 Apr 16, 2024
7505452
[clang][Interp] Implement VectorSplat casts
tbaederr Apr 16, 2024
184ba03
[RISCV] Avoid matching 3/5/9 * 2^N as 2^N + 2/4/8 (e.g. 24) (#88937)
preames Apr 16, 2024
4082a75
Improve stack usage to increase recursive initialization depth (#88546)
AaronBallman Apr 16, 2024
aefff77
[clang] Migrate DR tests to `static_assert` (#88611)
Endilll Apr 16, 2024
6b83fe5
[RISCV] Strength reduce mul by 2^n + 2/4/8 + 1 (#88911)
preames Apr 16, 2024
1c2afba
[CodeGen,test] Test llvm-libc style alias attribute with UsingShadowDecl
MaskRay Apr 16, 2024
5462b27
[NFC][libc++][TZDB] Refactors argument order. (#85781)
mordante Apr 16, 2024
a75c9d0
[NFC][libc++] Moves ios_base's forward declaration. (#88027)
mordante Apr 16, 2024
9cd3e92
[libc++][modules] Removes some validation quirks. (#88031)
mordante Apr 16, 2024
41a8305
[libc++] Removes deprecated _LIBCPP_ENABLE_<VERSION>_REMOVED_FEATURES…
mordante Apr 16, 2024
388da6a
[libc++][test] Removes Clang 16 validation. (#88558)
mordante Apr 16, 2024
8e0a4a8
[libc++][doc] Documents -DLIBCXX_INSTALL_MODULES=ON. (#88547)
mordante Apr 16, 2024
002297b
[gn] port 22629bb22a1b
nico Apr 16, 2024
8debcf0
[mlir][sparse] introduce sparse_tensor.iterate operation (#88807)
Apr 16, 2024
b955653
Revert "[mlir][sparse] introduce sparse_tensor.iterate operation" (#8…
Apr 16, 2024
481bd5d
[mlir][sparse] introduce `sparse_tensor.extract_iteration_space` oper…
Apr 16, 2024
edb711d
[InstCombine] Update `vector_reduce_and` tests to actually use `llvm.…
goldsteinn Apr 16, 2024
5c6af60
[Clang][Sema] placement new initializes typedef array with correct si…
mahtohappy Apr 16, 2024
b01879e
[MLIR][XeGPU] Add XeGPU scattered ops (#86594)
chencha3 Apr 16, 2024
9ec8c96
[clang][dataflow] Expose getReferencedDecls and relocate free functio…
bazuzi Apr 16, 2024
bbd64c4
[RISCV] Add coverage for strength reduction of mul as 2^N - 2^M
preames Apr 16, 2024
8885813
[libc++][chrono] Disables a test.
mordante Apr 16, 2024
0665669
[Sema] Mark alias/ifunc targets used and consider mangled names
MaskRay Apr 16, 2024
5422eb0
[memprof] Add another constructor to MemProfReader (#88952)
kazutakahirata Apr 16, 2024
c7657cf
[SLP]Keep externally used GEPs as GEPs, if possible instead of extrac…
alexey-bataev Apr 16, 2024
7d4e8c1
[SLP]Attempt to vectorize long stores, if short one failed.
alexey-bataev Apr 16, 2024
3eff86f
[gn build] Port 9ec8c961664d
llvmgnsyncbot Apr 16, 2024
b0ddbfb
[clang][SPIR-V] Set AS for the SPIR-V logical triple (#88939)
bogner Apr 16, 2024
c9731a3
[mlir] Fix a warning about an extraneous semicolon
kazutakahirata Apr 16, 2024
0a789ea
Fix test from #83124 and #88902
erichkeane Apr 16, 2024
9a0a28f
[Libomptarget] Rework Record & Replay to be a plugin member (#88928)
jhuber6 Apr 16, 2024
ed7038e
specify dialect in polynomial docs (#88933)
j2kun Apr 16, 2024
13ea36d
Fix UPCAddressofArraySubscriptGadget::getClaimedVarUseSites() (#88406)
juanvazquez Apr 16, 2024
f430e37
[llvm] Drop unaligned from calls to readNext (NFC) (#88841)
kazutakahirata Apr 16, 2024
281d716
[X86] Change how we treat functions with explicit sections as small/l…
aeubanks Apr 16, 2024
191be2a
update_test_checks: pre-commit a new test
nhaehnle Apr 8, 2024
e770249
update_test_checks: add new test
nhaehnle Apr 3, 2024
377a276
update_test_checks: remove an unused function
nhaehnle Apr 3, 2024
9ec6c5d
[flang][cuda] Add fir.deallocate operation (#88839)
clementval Apr 16, 2024
34777c2
[VPlan] Don't mark VPBlendRecipe as phi-like.
fhahn Apr 16, 2024
b6bd41d
[InstCombine] Add canonicalization of `sitofp` -> `uitofp nneg`
goldsteinn Mar 21, 2024
885b8d9
[RISCV] Enable mul strength reduction for XTheadBa
preames Apr 16, 2024
c6e0162
Revert "Reapply "[LV] Improve AnyOf reduction codegen. (#78304)""
aeubanks Apr 16, 2024
266b2a2
[ValueTracking] Add tests for `computeKnownFPClass` of `llvm.vector.r…
goldsteinn Apr 10, 2024
9eeae44
[ValueTracking] Implement `computeKnownFPClass` for `llvm.vector.redu…
goldsteinn Apr 10, 2024
d19bd05
Clang Release Notes: Fix reST formatting
hubert-reinterpretcast Apr 16, 2024
3074060
[memprof] Use SizeIs (NFC) (#88984)
kazutakahirata Apr 16, 2024
b1385db
[libc][NFC] fix typo in fenv type proxy headers (#88982)
michaelrj-google Apr 16, 2024
8aa061f
[mlir][sparse][NFC] switching to using `let argments/results` in td f…
Apr 16, 2024
9067070
[RISCV] Re-separate unaligned scalar and vector memory features in th…
topperc Apr 16, 2024
988ffd0
Add asan tests for libsanitizers. (#88349) (#88962)
usama54321 Apr 16, 2024
50a3717
[X86] Fix instr desc of CFCMOV's 'mr' variants
darkbuck Apr 16, 2024
1bc0921
[bazel] Add support for lldb-server (#88989)
keith Apr 16, 2024
be50a25
Update foldFMulReassoc to respect absent fast-math flags (#88589)
Apr 16, 2024
ce5381e
[mlir][vector] Determine vector sizes from the result shape in the ca…
pashu123 Apr 17, 2024
8c9f45e
[ARM64EC] Fix arm_neon.h on ARM64EC. (#88572)
efriedma-quic Apr 17, 2024
8c9d814
[mlir][complex] Fastmath flag for complex angle (#88658)
Lewuathe Apr 17, 2024
efd6055
Revert "[SLP]Attempt to vectorize long stores, if short one failed."
nikic Apr 17, 2024
7c26889
[Sparc] Fix instr desc of special register stores
darkbuck Apr 16, 2024
62853a2
[TableGen][InstrInfoEmitter] Count sub-operands on def operands
darkbuck Apr 16, 2024
d0f718e
Revert "Improve stack usage to increase recursive initialization dept…
vitalybuka Apr 17, 2024
1f35e72
[clang][builtin] Implement __builtin_allow_runtime_check (#87568)
vitalybuka Apr 17, 2024
52a4d81
[BOLT][NFC] Remove unused function (#89009)
maksfb Apr 17, 2024
0af8cae
[BOLT][NFC] Remove another unused function (#89011)
maksfb Apr 17, 2024
f40f4fc
[clang analysis] ExprMutationAnalyzer support recursive forwarding re…
HerrCai0907 Apr 17, 2024
3204f3e
[RISCV] Convert VTYPE operand check to assert in RISCVInsertVSETVLI. NFC
lukel97 Apr 17, 2024
c81e5fa
[RISCV] Add CFI information for vector callee-saved registers (#86811)
4vtomat Apr 17, 2024
e6ecff8
[C++20] [Modules] Add Release Notes and Documents for Reduced BMI
ChuanqiXu9 Apr 17, 2024
eafd515
[clang][deps] Support single-file mode for all formats (#88764)
jansvoboda11 Apr 17, 2024
6a4eaf9
[clang][deps] Add `-o` flag to specify output path (#88767)
jansvoboda11 Apr 17, 2024
f71e25b
[memprof] Simplify IndexedMemProfRecord::operator== (NFC) (#88986)
kazutakahirata Apr 17, 2024
fca2a49
[RISCV] Simplify FindRegWithEncoding in copyPhysRegVector. NFC (#89001)
topperc Apr 17, 2024
a6fcbcc
[libc++][TZDB] Improves time zone format specifiers. (#85797)
mordante Apr 17, 2024
e096c14
[analyzer] Fix a security.cert.env.InvalidPtr crash
steakhal Apr 17, 2024
024281d
[analyzer] Harden security.cert.env.InvalidPtr checker fn matching
steakhal Apr 17, 2024
b851c7f
[clang][dataflow] Support `StmtExpr` in `PropagateResultObject()`. (#…
martinboehme Apr 17, 2024
4714883
[mlir][python] Add `walk` method to PyOperationBase (#87962)
uenoku Apr 17, 2024
1bccbe1
[clang][dataflow] Treat `BuiltinBitCastExpr` correctly in `PropagateR…
martinboehme Apr 17, 2024
64c6495
[clang][NFC] Move `Sema::SkipBodyInfo` into namespace scope
Endilll Apr 17, 2024
16f1887
CompilerRT: Normalize COMPILER_RT_DEFAULT_TARGET_TRIPLE (#88835)
wzssyqa Apr 17, 2024
b090569
[RISCV] Support Zama16b1p0 (#88474)
jaidTw Apr 17, 2024
d35a643
Revert "Fix test from #83124 and #88902"
metaflow Apr 17, 2024
dbda478
Revert "[Clang][Sema] placement new initializes typedef array with co…
metaflow Apr 17, 2024
dd84d23
Revert "[Clang][Sema] placement new initializes typedef array with co…
metaflow Apr 17, 2024
bc3620d
AMDGPU: Move libcall simplify into PeepholeEP (#88853)
arsenm Apr 17, 2024
e11b17a
[clang][NFC] Refactor `Sema::CheckedConversionKind`
Endilll Apr 17, 2024
49b209d
Revert "[Libomptarget] Rework Record & Replay to be a plugin member" …
jplehr Apr 17, 2024
9f3334e
[mlir][SparseTensor] Add missing dependent dialect to pass (#88870)
matthias-springer Apr 17, 2024
889dfd4
[libc][msan] Fix "non-constexpr function '__msan_unpoison' cannot be …
gchatelet Apr 17, 2024
17b86d5
[X86][NFC] Add test cases for pr88958
phoebewang Apr 17, 2024
d1a69e4
Move gfni for bitreverse check out of SSSE3. (#88938)
shamithoke Apr 17, 2024
a16bb07
[lldb][test] Improve invalid compiler error message
DavidSpickett Apr 17, 2024
d9a5aa8
[PatternMatch] Do not accept undef elements in m_AllOnes() and friend…
nikic Apr 17, 2024
971237d
[flang] Retain internal and BIND(C) host procedure link in FIR (#87796)
jeanPerier Apr 17, 2024
b512df6
[SPIR-V] Improve Tablegen instruction selection and account for a poi…
VyacheslavLevytskyy Apr 17, 2024
42d801d
[SPIR-V] Account for zext in a llvm intrinsic call (#88903)
VyacheslavLevytskyy Apr 17, 2024
fa61f06
Fix threadprivate variable scope inside BLOCK construct. (#88921)
harishch4 Apr 17, 2024
cbe148b
[LV][NFC] Remove the declaration of function `fixReduction`. (#88491)
Mel-Chen Apr 17, 2024
a9bafe9
[VPlan] Split VPWidenMemoryInstructionRecipe (NFCI). (#87411)
fhahn Apr 17, 2024
f4737a2
update_test_checks: keep names stable with generated functions (#87988)
nhaehnle Apr 17, 2024
3eb0ba3
[MLIR][Flang][OpenMP] Make omp.simdloop into a loop wrapper (#87365)
skatrak Apr 17, 2024
16b0be6
[MLIR][OpenMP] NFC: Remove LoopControl parsing/printing code (#88909)
skatrak Apr 17, 2024
a020199
[RISCV] Assert only valid AVLs in doLocalPostpass are X0 or virtual r…
lukel97 Apr 17, 2024
a634f3e
[RemoveDIs] Update update_test_checks script to recognize dbg_records…
SLTozer Apr 17, 2024
792d437
[clang-tidy NFC] Fix a typo in docs for sizeof-expression (#88912)
NagyDonat Apr 17, 2024
5f3e106
[lldb/linux] Make sure the process continues running after a detach (…
labath Apr 17, 2024
c8dca5b
[Flang][OpenMP][Lower] Refactor lowering of compound constructs (#87070)
skatrak Apr 17, 2024
06eedff
[analyzer] Use explicit call description mode in iterator checkers (#…
NagyDonat Apr 17, 2024
631c5e8
[mlir] fix intNEQValue summary (#89029)
MbjYjbpivj Apr 17, 2024
d57907d
[libc++] Add missing iterator requirement checks in the PSTL (#88127)
ldionne Apr 17, 2024
6c78530
[X86] vector-shuffle-combining-sse41.ll - add missing AVX1/2/512 chec…
RKSimon Apr 17, 2024
37b26bf
[mlir] transform.apply_patterns support more config options (#88484)
ftynse Apr 17, 2024
4536ad4
[RISCV] Fix clang-tidy warning about else after return. NFC
lukel97 Apr 17, 2024
86a7828
[TailDuplicator] Add maximum predecessors and successors to consider …
DianQK Apr 17, 2024
915c84b
[lldb] Fix evaluation of expressions with static initializers (#89063)
labath Apr 17, 2024
79726ef
[VP] Correct lowering of predicated fma and faddmul to avoid strictfp…
kpneal Apr 17, 2024
7b8625e
[AMDGPU][Docs] Fix broken link to HRF memory model reference (#88696)
ritter-x2a Apr 17, 2024
971ec1f
[Inline] Regenerate inline-switch-default-2.ll (NFC)
DianQK Apr 17, 2024
73140da
[mlir] expose transform dialect symbol merge to python (#87690)
ftynse Apr 17, 2024
20d653f
[LLVM][CodeGen] Fix register lane liveness tracking in RegisterPressu…
kparzysz Apr 17, 2024
1fc72db
[RISCV] Add test for doLocalPostpass issue not checking if VL was mod…
lukel97 Apr 17, 2024
76ad289
[PowerPC] 32-bit large code-model support for toc-data (#85129)
syzaara Apr 17, 2024
edbeae3
[RISCV] Explicitly bail if something modifies VL/VTYPE in doLocalPost…
lukel97 Apr 17, 2024
3820571
[C99] Remove WG14 N522 from the C status page
AaronBallman Apr 16, 2024
41b7341
[VPlan] Factor out helper to recursively collect all users (NFCI).
fhahn Apr 17, 2024
856d1c4
[AMDGPU] Fix predicates for BUFFER_ATOMIC_FMIN/FMAX patterns (#89066)
jayfoad Apr 17, 2024
4f88c23
[mlir][py] Add NVGPU's `TensorMapDescriptorType` in py bindings (#88855)
grypp Apr 17, 2024
fda04b1
[libc] Replace mentions of `LIBC_FULLBUILD` with `LLVM_LIBC_FULL_BUIL…
Rajveer100 Apr 17, 2024
d558c09
[NFC] Clean dead code in ParsedAttr.h (#89064)
yronglin Apr 17, 2024
dbafcd7
[lldb] XFAIL TestDetachResumes on windows
labath Apr 17, 2024
e490435
[CostModel][X86] Update BITREVERSE costs for GFNI targets
RKSimon Apr 17, 2024
4a5ab13
[VectorCombine] Remove single quotes from "-passes=vector-combine"
RKSimon Apr 17, 2024
5d31435
[VPlan] Check for VPWidenLoadRecipe directly in truncateToMinBW. (NFCI).
fhahn Apr 17, 2024
812963f
[libc++][chrono] Improves date formatting. (#86127)
mordante Apr 17, 2024
458328a
[clang][NFC] Refactor `Sema::RedeclarationKind`
Endilll Apr 17, 2024
950bb09
Revert "[Clang][AArch64] Warn when calling non/streaming about vector…
dtemirbulatov Apr 17, 2024
b854a23
[libc][c23][fenv] Implement fetestexceptflag (#87828)
robincaloudis Apr 17, 2024
8656d4c
[Clang][Parse] Diagnose requires expressions with explicit object par…
sdkrystian Apr 17, 2024
abd5e45
[compiler-rt] Use __atomic builtins whenever possible
arichardson Apr 17, 2024
a88ea8f
[flang][cuda] Update memory effect on fir.cuda_allocate op (#88930)
clementval Apr 17, 2024
da70f2c
[flang][cuda] Lower ALLOCATE for device variable (#88980)
clementval Apr 17, 2024
19c6a7f
[FMV] Remove useless features according the latest ACLE spec. (#88965)
labrinea Apr 17, 2024
06947b9
[libc][POSIX][pthreads] implement pthread_condattr_t functions (#88987)
nickdesaulniers Apr 17, 2024
4edeaff
[mlir][tosa] Fix tosa.Resize-to-linalg lowering (#88514)
fabrizio-indirli Apr 17, 2024
564f9ab
[bazel][mlir] Add missing dep after 4f88c2311130791cf69da34b743b1b3ba…
slackito Apr 17, 2024
e59632b
[RISCV] Fix typo in RISCVScheduleV.td that was introduced in 60a1158
michaelmaitland Apr 17, 2024
676d3ba
[bazel][libc] Add missing dep after b854a2323337be2633b1135f590678a17…
slackito Apr 17, 2024
693a458
[MLIR] Update doc comment in ViewLikeInterface.td (NFC) (#89074)
abdulraheembeigh Apr 17, 2024
6f7160e
[SLP]Attempt to vectorize long stores, if short one failed.
alexey-bataev Apr 16, 2024
eefee38
[libc] set cmake dependencies for condattr test (#89103)
nickdesaulniers Apr 17, 2024
8255360
[CostModel][X86] Add basic GFNI target test coverage for shift/rotate…
RKSimon Apr 17, 2024
da04e4a
[InstCombine] Use `auto *` instead of `auto` in `visitSIToFP`; NFC
goldsteinn Apr 17, 2024
d423d80
[libc++][pstl] Promote CPU backends to top-level backends (#88968)
ldionne Apr 17, 2024
8d49ce1
[GlobalISel][AArch64] Add LLRINT support (#88702)
davemgreen Apr 17, 2024
2c22a0c
[InstCombine] Add test case for turning sub into xor using dominating…
topperc Apr 12, 2024
421a8c5
[InstCombine] Add phase ordering test for #88239. NFC
topperc Apr 17, 2024
ed741ff
[github] Add ClangIR to new-prs-labeler.yml (#86088)
lanza Apr 17, 2024
c02ed29
[CostModel][X86] Recognise vector rotation by uniform constant patterns
RKSimon Apr 17, 2024
58a08e1
[RISCV] Add coverage for strength reduction of mul by small negative …
preames Apr 17, 2024
cc82f12
[AArch64] Update latencies for Cortex-A510 scheduling model (#87293)
UsmanNadeem Apr 17, 2024
4572a2d
[AArch64] Add some test cases for LD2/LD3/LD4 shuffles. NFC
davemgreen Apr 17, 2024
5a0942c
[llvm][NVPTX] Don't emit unused var 'temp_param_reg' (NFC) (#89004)
JOE1994 Apr 17, 2024
800f105
[GitHub] Add a new mapping for `offload` subproject (#89118)
shiltian Apr 17, 2024
6f7976c
[libc++][TZDB] Adds sys_info formatter. (#85896)
mordante Apr 17, 2024
b1dc62f
[clang]Treat arguments to builtin type traits as template type argume…
AMP999 Apr 17, 2024
6cea7c4
[X86] Always use 64-bit relocations in no-PIC large code model (#89101)
aeubanks Apr 17, 2024
1460b49
[gn build] Manually port d423d80e560d
aeubanks Apr 17, 2024
dcf2121
Merge branch 'clang-pgo-cold' into HEAD
aeubanks Apr 17, 2024
9ef6d66
add test, check PGOOpt before using PGOOpt->ColdOptType
aeubanks Apr 17, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Revert "Improve stack usage to increase recursive initialization dept…
…h" (#89006)

Reverts #88546

Leak and performance regression.
Details in #88546
vitalybuka authored Apr 17, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
commit d0f718e06848774a4e9d0b253cf75c1408b5f41a
6 changes: 0 additions & 6 deletions clang/docs/ReleaseNotes.rst
Original file line number Diff line number Diff line change
@@ -203,12 +203,6 @@ Non-comprehensive list of changes in this release
- ``__typeof_unqual__`` is available in all C modes as an extension, which behaves
like ``typeof_unqual`` from C23, similar to ``__typeof__`` and ``typeof``.

- Improved stack usage with C++ initialization code. This allows significantly
more levels of recursive initialization before reaching stack exhaustion
limits. This will positively impact recursive template instantiation code,
but should also reduce memory overhead for initializations in general.
Fixes #GH88330

New Compiler Flags
------------------
- ``-fsanitize=implicit-bitfield-conversion`` checks implicit truncation and
6 changes: 2 additions & 4 deletions clang/include/clang/Sema/Initialization.h
Original file line number Diff line number Diff line change
@@ -1134,7 +1134,7 @@ class InitializationSequence {
OverloadingResult FailedOverloadResult;

/// The candidate set created when initialization failed.
std::unique_ptr<OverloadCandidateSet> FailedCandidateSet;
OverloadCandidateSet FailedCandidateSet;

/// The incomplete type that caused a failure.
QualType FailedIncompleteType;
@@ -1403,9 +1403,7 @@ class InitializationSequence {
/// Retrieve a reference to the candidate set when overload
/// resolution fails.
OverloadCandidateSet &getFailedCandidateSet() {
assert(FailedCandidateSet &&
"this should have been allocated in the constructor!");
return *FailedCandidateSet;
return FailedCandidateSet;
}

/// Get the overloading result, for when the initialization
70 changes: 51 additions & 19 deletions clang/include/clang/Sema/Overload.h
Original file line number Diff line number Diff line change
@@ -37,7 +37,6 @@
#include <cassert>
#include <cstddef>
#include <cstdint>
#include <memory>
#include <utility>

namespace clang {
@@ -875,8 +874,7 @@ class Sema;
ConversionFixItGenerator Fix;

/// Viable - True to indicate that this overload candidate is viable.
LLVM_PREFERRED_TYPE(bool)
unsigned Viable : 1;
bool Viable : 1;

/// Whether this candidate is the best viable function, or tied for being
/// the best viable function.
@@ -885,14 +883,12 @@ class Sema;
/// was part of the ambiguity kernel: the minimal non-empty set of viable
/// candidates such that all elements of the ambiguity kernel are better
/// than all viable candidates not in the ambiguity kernel.
LLVM_PREFERRED_TYPE(bool)
unsigned Best : 1;
bool Best : 1;

/// IsSurrogate - True to indicate that this candidate is a
/// surrogate for a conversion to a function pointer or reference
/// (C++ [over.call.object]).
LLVM_PREFERRED_TYPE(bool)
unsigned IsSurrogate : 1;
bool IsSurrogate : 1;

/// IgnoreObjectArgument - True to indicate that the first
/// argument's conversion, which for this function represents the
@@ -901,20 +897,18 @@ class Sema;
/// implicit object argument is just a placeholder) or a
/// non-static member function when the call doesn't have an
/// object argument.
LLVM_PREFERRED_TYPE(bool)
unsigned IgnoreObjectArgument : 1;
bool IgnoreObjectArgument : 1;

/// True if the candidate was found using ADL.
LLVM_PREFERRED_TYPE(CallExpr::ADLCallKind)
unsigned IsADLCandidate : 1;
CallExpr::ADLCallKind IsADLCandidate : 1;

/// Whether this is a rewritten candidate, and if so, of what kind?
LLVM_PREFERRED_TYPE(OverloadCandidateRewriteKind)
unsigned RewriteKind : 2;

/// FailureKind - The reason why this candidate is not viable.
LLVM_PREFERRED_TYPE(OverloadFailureKind)
unsigned FailureKind : 5;
/// Actually an OverloadFailureKind.
unsigned char FailureKind;

/// The number of call arguments that were explicitly provided,
/// to be used while performing partial ordering of function templates.
@@ -978,9 +972,7 @@ class Sema;
private:
friend class OverloadCandidateSet;
OverloadCandidate()
: IsSurrogate(false),
IsADLCandidate(static_cast<unsigned>(CallExpr::NotADL)),
RewriteKind(CRK_None) {}
: IsSurrogate(false), IsADLCandidate(CallExpr::NotADL), RewriteKind(CRK_None) {}
};

/// OverloadCandidateSet - A set of overload candidates, used in C++
@@ -1078,16 +1070,51 @@ class Sema;
};

private:
SmallVector<OverloadCandidate, 4> Candidates;
llvm::SmallPtrSet<uintptr_t, 4> Functions;
SmallVector<OverloadCandidate, 16> Candidates;
llvm::SmallPtrSet<uintptr_t, 16> Functions;

// Allocator for ConversionSequenceLists. We store the first few of these
// inline to avoid allocation for small sets.
llvm::BumpPtrAllocator SlabAllocator;

SourceLocation Loc;
CandidateSetKind Kind;
OperatorRewriteInfo RewriteInfo;

constexpr static unsigned NumInlineBytes =
24 * sizeof(ImplicitConversionSequence);
unsigned NumInlineBytesUsed = 0;
alignas(void *) char InlineSpace[NumInlineBytes];

// Address space of the object being constructed.
LangAS DestAS = LangAS::Default;

/// If we have space, allocates from inline storage. Otherwise, allocates
/// from the slab allocator.
/// FIXME: It would probably be nice to have a SmallBumpPtrAllocator
/// instead.
/// FIXME: Now that this only allocates ImplicitConversionSequences, do we
/// want to un-generalize this?
template <typename T>
T *slabAllocate(unsigned N) {
// It's simpler if this doesn't need to consider alignment.
static_assert(alignof(T) == alignof(void *),
"Only works for pointer-aligned types.");
static_assert(std::is_trivial<T>::value ||
std::is_same<ImplicitConversionSequence, T>::value,
"Add destruction logic to OverloadCandidateSet::clear().");

unsigned NBytes = sizeof(T) * N;
if (NBytes > NumInlineBytes - NumInlineBytesUsed)
return SlabAllocator.Allocate<T>(N);
char *FreeSpaceStart = InlineSpace + NumInlineBytesUsed;
assert(uintptr_t(FreeSpaceStart) % alignof(void *) == 0 &&
"Misaligned storage!");

NumInlineBytesUsed += NBytes;
return reinterpret_cast<T *>(FreeSpaceStart);
}

void destroyCandidates();

public:
@@ -1136,7 +1163,12 @@ class Sema;
ConversionSequenceList
allocateConversionSequences(unsigned NumConversions) {
ImplicitConversionSequence *Conversions =
new ImplicitConversionSequence[NumConversions];
slabAllocate<ImplicitConversionSequence>(NumConversions);

// Construct the new objects.
for (unsigned I = 0; I != NumConversions; ++I)
new (&Conversions[I]) ImplicitConversionSequence();

return ConversionSequenceList(Conversions, NumConversions);
}

26 changes: 12 additions & 14 deletions clang/lib/Sema/SemaInit.cpp
Original file line number Diff line number Diff line change
@@ -6114,8 +6114,7 @@ InitializationSequence::InitializationSequence(
Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind,
MultiExprArg Args, bool TopLevelOfInitList, bool TreatUnavailableAsInvalid)
: FailedOverloadResult(OR_Success),
FailedCandidateSet(new OverloadCandidateSet(
Kind.getLocation(), OverloadCandidateSet::CSK_Normal)) {
FailedCandidateSet(Kind.getLocation(), OverloadCandidateSet::CSK_Normal) {
InitializeFrom(S, Entity, Kind, Args, TopLevelOfInitList,
TreatUnavailableAsInvalid);
}
@@ -9736,7 +9735,7 @@ bool InitializationSequence::Diagnose(Sema &S,
switch (FailedOverloadResult) {
case OR_Ambiguous:

FailedCandidateSet->NoteCandidates(
FailedCandidateSet.NoteCandidates(
PartialDiagnosticAt(
Kind.getLocation(),
Failure == FK_UserConversionOverloadFailed
@@ -9750,8 +9749,7 @@ bool InitializationSequence::Diagnose(Sema &S,
break;

case OR_No_Viable_Function: {
auto Cands =
FailedCandidateSet->CompleteCandidates(S, OCD_AllCandidates, Args);
auto Cands = FailedCandidateSet.CompleteCandidates(S, OCD_AllCandidates, Args);
if (!S.RequireCompleteType(Kind.getLocation(),
DestType.getNonReferenceType(),
diag::err_typecheck_nonviable_condition_incomplete,
@@ -9761,13 +9759,13 @@ bool InitializationSequence::Diagnose(Sema &S,
<< OnlyArg->getType() << Args[0]->getSourceRange()
<< DestType.getNonReferenceType();

FailedCandidateSet->NoteCandidates(S, Args, Cands);
FailedCandidateSet.NoteCandidates(S, Args, Cands);
break;
}
case OR_Deleted: {
OverloadCandidateSet::iterator Best;
OverloadingResult Ovl =
FailedCandidateSet->BestViableFunction(S, Kind.getLocation(), Best);
OverloadingResult Ovl
= FailedCandidateSet.BestViableFunction(S, Kind.getLocation(), Best);

StringLiteral *Msg = Best->Function->getDeletedMessage();
S.Diag(Kind.getLocation(), diag::err_typecheck_deleted_function)
@@ -9951,7 +9949,7 @@ bool InitializationSequence::Diagnose(Sema &S,
// bad.
switch (FailedOverloadResult) {
case OR_Ambiguous:
FailedCandidateSet->NoteCandidates(
FailedCandidateSet.NoteCandidates(
PartialDiagnosticAt(Kind.getLocation(),
S.PDiag(diag::err_ovl_ambiguous_init)
<< DestType << ArgsRange),
@@ -10005,7 +10003,7 @@ bool InitializationSequence::Diagnose(Sema &S,
break;
}

FailedCandidateSet->NoteCandidates(
FailedCandidateSet.NoteCandidates(
PartialDiagnosticAt(
Kind.getLocation(),
S.PDiag(diag::err_ovl_no_viable_function_in_init)
@@ -10015,8 +10013,8 @@ bool InitializationSequence::Diagnose(Sema &S,

case OR_Deleted: {
OverloadCandidateSet::iterator Best;
OverloadingResult Ovl =
FailedCandidateSet->BestViableFunction(S, Kind.getLocation(), Best);
OverloadingResult Ovl
= FailedCandidateSet.BestViableFunction(S, Kind.getLocation(), Best);
if (Ovl != OR_Deleted) {
S.Diag(Kind.getLocation(), diag::err_ovl_deleted_init)
<< DestType << ArgsRange;
@@ -10095,8 +10093,8 @@ bool InitializationSequence::Diagnose(Sema &S,
S.Diag(Kind.getLocation(), diag::err_selected_explicit_constructor)
<< Args[0]->getSourceRange();
OverloadCandidateSet::iterator Best;
OverloadingResult Ovl =
FailedCandidateSet->BestViableFunction(S, Kind.getLocation(), Best);
OverloadingResult Ovl
= FailedCandidateSet.BestViableFunction(S, Kind.getLocation(), Best);
(void)Ovl;
assert(Ovl == OR_Success && "Inconsistent overload resolution");
CXXConstructorDecl *CtorDecl = cast<CXXConstructorDecl>(Best->Function);
21 changes: 10 additions & 11 deletions clang/lib/Sema/SemaOverload.cpp
Original file line number Diff line number Diff line change
@@ -1057,14 +1057,17 @@ bool OverloadCandidateSet::OperatorRewriteInfo::shouldAddReversed(

void OverloadCandidateSet::destroyCandidates() {
for (iterator i = begin(), e = end(); i != e; ++i) {
delete[] i->Conversions.data();
for (auto &C : i->Conversions)
C.~ImplicitConversionSequence();
if (!i->Viable && i->FailureKind == ovl_fail_bad_deduction)
i->DeductionFailure.Destroy();
}
}

void OverloadCandidateSet::clear(CandidateSetKind CSK) {
destroyCandidates();
SlabAllocator.Reset();
NumInlineBytesUsed = 0;
Candidates.clear();
Functions.clear();
Kind = CSK;
@@ -6980,7 +6983,7 @@ void Sema::AddOverloadCandidate(
Candidate.RewriteKind =
CandidateSet.getRewriteInfo().getRewriteKind(Function, PO);
Candidate.IsSurrogate = false;
Candidate.IsADLCandidate = static_cast<unsigned>(IsADLCandidate);
Candidate.IsADLCandidate = IsADLCandidate;
Candidate.IgnoreObjectArgument = false;
Candidate.ExplicitCallArguments = Args.size();

@@ -7812,7 +7815,7 @@ void Sema::AddTemplateOverloadCandidate(
Candidate.RewriteKind =
CandidateSet.getRewriteInfo().getRewriteKind(Candidate.Function, PO);
Candidate.IsSurrogate = false;
Candidate.IsADLCandidate = static_cast<unsigned>(IsADLCandidate);
Candidate.IsADLCandidate = IsADLCandidate;
// Ignore the object argument if there is one, since we don't have an object
// type.
Candidate.IgnoreObjectArgument =
@@ -14122,8 +14125,7 @@ static ExprResult FinishOverloadedCallExpr(Sema &SemaRef, Scope *S, Expr *Fn,
return ExprError();
return SemaRef.BuildResolvedCallExpr(
Res.get(), FDecl, LParenLoc, Args, RParenLoc, ExecConfig,
/*IsExecConfig=*/false,
static_cast<CallExpr::ADLCallKind>((*Best)->IsADLCandidate));
/*IsExecConfig=*/false, (*Best)->IsADLCandidate);
}

case OR_No_Viable_Function: {
@@ -14182,8 +14184,7 @@ static ExprResult FinishOverloadedCallExpr(Sema &SemaRef, Scope *S, Expr *Fn,
return ExprError();
return SemaRef.BuildResolvedCallExpr(
Res.get(), FDecl, LParenLoc, Args, RParenLoc, ExecConfig,
/*IsExecConfig=*/false,
static_cast<CallExpr::ADLCallKind>((*Best)->IsADLCandidate));
/*IsExecConfig=*/false, (*Best)->IsADLCandidate);
}
}

@@ -14490,8 +14491,7 @@ Sema::CreateOverloadedUnaryOp(SourceLocation OpLoc, UnaryOperatorKind Opc,
Args[0] = Input;
CallExpr *TheCall = CXXOperatorCallExpr::Create(
Context, Op, FnExpr.get(), ArgsArray, ResultTy, VK, OpLoc,
CurFPFeatureOverrides(),
static_cast<CallExpr::ADLCallKind>(Best->IsADLCandidate));
CurFPFeatureOverrides(), Best->IsADLCandidate);

if (CheckCallReturnType(FnDecl->getReturnType(), OpLoc, TheCall, FnDecl))
return ExprError();
@@ -14909,8 +14909,7 @@ ExprResult Sema::CreateOverloadedBinOp(SourceLocation OpLoc,
// members; CodeGen should take care not to emit the this pointer.
TheCall = CXXOperatorCallExpr::Create(
Context, ChosenOp, FnExpr.get(), Args, ResultTy, VK, OpLoc,
CurFPFeatureOverrides(),
static_cast<CallExpr::ADLCallKind>(Best->IsADLCandidate));
CurFPFeatureOverrides(), Best->IsADLCandidate);

if (const auto *Method = dyn_cast<CXXMethodDecl>(FnDecl);
Method && Method->isImplicitObjectMemberFunction()) {