Changes
clang-d324508-g3550da79ecd-t1105-b1105.tar.gz (Aug 16, 2019 1:19:37 PM)
- [AMDGPU] removed unused functions from printf lowering — Stanislav.Mekhanoshin / detail
- Do not call replaceAllUsesWith to upgrade calls to ARC runtime functions — Akira / detail
- [X86] Remove 'Server' from Tigerlake description comments. — craig.topper / detail
- Move findBBwithCalls to the file it's used in to avoid unused function — echristo / detail
- Revert "Do not call replaceAllUsesWith to upgrade calls to ARC runtime — Akira / detail
- [Symbol] Remove redundant include — apl / detail
- clang-scan-deps: do not spawn threads when LLVM_ENABLE_THREADS is — Alex Lorenz / detail
- [TSan] Fix test failing on Linux — jlettner / detail
- Eliminate implicit Register->unsigned conversions in VirtRegMap. NFC — daniel_l_sanders / detail
- [lld] Remove unnecessary "class Lazy" — llvm / detail
- [AMDGPU] Fix msan failure in printf lowering — Stanislav.Mekhanoshin / detail
- Do not call replaceAllUsesWith to upgrade calls to ARC runtime functions — Akira / detail
- Verifier: check prof branch_weights — yevgeny.rouban / detail
- [GlobalISel]: Add KnownBits for G_XOR — aditya_nandakumar / detail
- [ELF][test] Add dynamic-list-preempt2.s — maskray / detail
- Added unit tests to check supported rounding modes — sepavloff / detail
- [ELF] Rename odd variable names "New" after r365730. NFC — maskray / detail
- [GlobalISel] Make the InstructionSelector instance non-const, allowing — Amara Emerson / detail
- [AArch64][GlobalISel] Replace explicit vreg creation with implicit using — Amara Emerson / detail
- [PowerPC] Fix ICE when truncating some vectors — qiucofan / detail
- [ASTImporter] Import additional flags for functions. — 1.int32 / detail
- [NFC][InstCombine] Non-canonical clamp pattern: non-canonical predicate — lebedev.ri / detail
- [SimplifyLibCalls] Add dereferenceable bytes from known callsites — david.bolvansky / detail
- [NFC] Updated tests after r368657 — david.bolvansky / detail
- [ELF] Simplify handling of exportDynamic and isPreemptible — maskray / detail
- Revert r368276 "[TargetLowering] SimplifyDemandedBits - call — hans / detail
- [ELF] Don't special case symbolic relocations with 0 addend to ifunc in — maskray / detail
- [X86] SimplifyDemandedVectorElts - attempt to recombine target shuffle — llvm-dev / detail
- [X86] XFormVExtractWithShuffleIntoLoad - handle shuffle mask scaling — llvm-dev / detail
- [libc++] Use [[nodiscard]] for lock_guard, as an extension — Louis Dionne / detail
- gn build: Make sync script group output by revision — nicolasweber / detail
- [libc++] Fix incorrect UNSUPPORTED annotation — Louis Dionne / detail
- gn build: Give cmake sync script an opt-in --write flag — nicolasweber / detail
- gn build: Merge r368630 — nicolasweber / detail
- gn build: Extract git() and git_out() functions in sync script — nicolasweber / detail
- [pstl] Rename PARALLELSTL_BACKEND to PSTL_PARALLEL_BACKEND — Louis Dionne / detail
- [CodeGen] Disable UBSan for coroutine functions — modocache / detail
- [llvm-readobj] - Remove 'error(Error EC)' helper. — grimar / detail
- [lldb][NFC] Add basic IOHandler completion test — Raphael Isemann / detail
- [libTooling] In Transformer, generalize `applyFirst` to admit rules with — yitzhakm / detail
- [pstl] Allow customizing whether per-TU insulation is provided — Louis Dionne / detail
- [InstCombine] foldXorOfICmps(): don't give up on non-single-use ICmp's — lebedev.ri / detail
- [InstCombine][NFC] Rename IsFreeToInvert() -> isFreeToInvert() for — lebedev.ri / detail
- [InstCombine] Non-canonical clamp-like pattern handling — lebedev.ri / detail
- [lldb] Reland "Refactor guard variable checks in IRForTarget" — Raphael Isemann / detail
- [analyzer][NFC] Refactoring BugReporter.cpp P1.: Store interesting — dkszelethus / detail
- [AIX][test/Index] Set/propagate AIXTHREAD_STK for AIX — hubert.reinterpretcast / detail
- [AIX] Implement LR prolog/epilog save/restore — hubert.reinterpretcast / detail
- Fix -Wdocumentation typo. NFCI. — llvm-dev / detail
- Fix -Wdocumentation warning (@returns used in void function). NFCI. — llvm-dev / detail
- [analyzer][NFC] Refactoring BugReporter.cpp P2.: Clean up the — dkszelethus / detail
- [lldb] Fix Microsoft guard variable detection — Raphael Isemann / detail
- [AArch64] Make the memtag sanitizer require the memtag extension — momchil.velikov / detail
- Enable memtag sanitizer in all AArch64 toolchains — momchil.velikov / detail
- [llvm-readelf] Implement note parsing for NT_FILE and unknown — rupprecht / detail
- Revert r368691; test checked in without changes by accident — hubert.reinterpretcast / detail
- [clang-tidy] Update `TransformerClangTidyCheck` to use new — yitzhakm / detail
- [TargetLowering][NFC] prepareUREMEqFold(): fixup comment — lebedev.ri / detail
- [CodeGen][SelectionDAG] More efficient code for X % C == 0 (SREM case) — lebedev.ri / detail
- [libc++] Always build with -fvisibility=hidden — Louis Dionne / detail
- GlobalISel: Change representation of shuffle masks — Matthew.Arsenault / detail
- GlobalISel: Add more verifier checks for G_SHUFFLE_VECTOR — Matthew.Arsenault / detail
- Fix crash on switch conditions of non-integer types in templates — elizabeth.andrews / detail
- [ORC] Refactor definition-generation, add a generator for static — Lang Hames / detail
- GlobalISel: Implement lower for G_SHUFFLE_VECTOR — Matthew.Arsenault / detail
- [lld][test] Update test to print ELF note description data — rupprecht / detail
- [ARM] Fix encoding of APSR in CLRM instruction — momchil.velikov / detail
- [ARM] Fix detection of duplicates when parsing reg list operands — momchil.velikov / detail
- GlobalISel: Partially implement fewerElementsVector G_UNMERGE_VALUES — Matthew.Arsenault / detail
- [SLC] Improve dereferenceable bytes annotation — david.bolvansky / detail
- [X86] Add some vXi8 extract subvector cost model tests — llvm-dev / detail
- [analyzer][NFC] Refactoring BugReporter.cpp P3.: — dkszelethus / detail
- [Dwarf] Complete the list of type tags. — Jonas Devlieghere / detail
- [lld][WebAssembly] Allow linking of pic code into static binaries — sbc / detail
- [NFC][AIX] Use assert instead of llvm_unreachable — daltenty / detail
- Reland r368691: "[AIX] Implement LR prolog/epilog save/restore" — hubert.reinterpretcast / detail
- [NFC] Revisited/updated tests — david.bolvansky / detail
- [ValueTracking] Improve reverse assumption inference — nikita.ppv / detail
- [SimplifyLibCalls] Add noalias from known callsites — david.bolvansky / detail
- [NFC] Updated tests after r368724 — david.bolvansky / detail
- [util] Allow callsigns when running git llvm revert — rupprecht / detail
- Use Register over unsigned in LateEHPrepare (NFC) — aheejin / detail
- clang: Don't warn on unused momit-leaf-frame-pointer when frame pointers — nicolasweber / detail
- [NFC] Fixed test — david.bolvansky / detail
- [AutoUpgrader] Make ArcRuntime Autoupgrader more conservative — Steven Wu / detail
- [llvm-profdata] Profile dump for compact binary format — aktoon / detail
- [clang] Refactor doc comments to Decls attribution — Jan Korous / detail
- [ARM] Add MVE beats vector cost model — david.green / detail
- [NFC][clang] Adding argument based Phase list filtering to — puyan / detail
- [analyzer][NFC] Refactoring BugReporter.cpp P4.: If it can be const, — dkszelethus / detail
- [AMDGPU] Fix to 'Fold readlane from copy of SGPR or imm' — tpr.llvm / detail
- [analyzer][NFC] Refactoring BugReporter.cpp P5.: Compact mile long — dkszelethus / detail
- Revert "Fix crash on switch conditions of non-integer types in — gribozavr / detail
- Don't use std::errc — a.bataev / detail
- [ORC] Fix BuildingAJIT tutorial code broken by r368707. — Lang Hames / detail
- [Symbol] Decouple clang from CompilerType — apl / detail
- [DWARF} Use LLVM's debug line parser in LLDB. — Jonas Devlieghere / detail
- [Refactor] Moving SourceExtraction header from lib to include — shauryab98 / detail
- [AIX]Lowering global address for 32/64bit small/large code models — xiangxdh / detail
- [analyzer][NFC] Address inlines of D65484 — dkszelethus / detail
- [DWARF] Guess the path style — Jonas Devlieghere / detail
- [GISel] Pass MachineRegisterInfo by const reference to matcher. — mark.lacey / detail
- Remove the extra `;`. — michael.hliao / detail
- [libc++] Mark two <chrono> tests as unsupported on AppleClang 11 — Louis Dionne / detail
- [WebAssembly] Make clang emit correct va_arg code for structs — gzchen / detail
- Factor architecture dependent code out of loop.cu — jonathanchesterfield / detail
- [analyzer][NFC] Refactoring BugReporter.cpp P6.: Completely get rid of — dkszelethus / detail
- [GlobalISel]: Fix lowering of G_SHUFFLE_VECTOR with scalar sources — aditya_nandakumar / detail
- Add a missing header comment, NFC — erik.pilkington / detail
- [analyzer][NFC] Make sure that the BugReport is not modified during the — dkszelethus / detail
- Relax opcode checks in test to check for only a number instead of a — douglas.yung / detail
- [GlobalISel][NFC] Factor out common target code from — Jessica Paquette / detail
- [NFCI] Explicitly provide user-defined constructor for SectionRef — apl / detail
- Initial support for native debugging of x86/x64 Windows processes — aaron.smith / detail
- Attempt to fix issue with unresolved lit test in TableGen — Jessica Paquette / detail
- [clang] DirectoryWatcher for Windows stubs (to fix build break). — Jan Korous / detail
- [clang][DirectoryWatcher] Fix Windows stub after LLVM change — Jan Korous / detail
- [Polly-ACC] Fix test after IR-printer change. — llvm / detail
- [ORC] Fix SpeculativeJIT example code broken by r368707. — Lang Hames / detail
- [analyzer] Disable the checker-plugins test on Darwin. — Artem Dergachev / detail
- [analyzer] exploded-graph-rewriter: Open the converted graph — Artem Dergachev / detail
- [analyzer] exploded-graph-rewriter: NFC: Refactor explorers into — Artem Dergachev / detail
- [analyzer] exploded-graph-rewriter: Implement manual graph trimming. — Artem Dergachev / detail
- [analyzer] exploded-graph-rewriter: Implement displaying Store pointers. — Artem Dergachev / detail
- [AArch64] Remove incorrect usage of MONonTemporal. — efriedma / detail
- [analyzer] Prune calls to functions with linear CFGs that return a — dkszelethus / detail
- [DebugLine] Be more robust in geussing the path style — Jonas Devlieghere / detail
- [analyzer] Track the right hand side of the last store regardless of its — dkszelethus / detail
- Enable lldb-server on Windows — aaron.smith / detail
- [AArch64][GlobalISel] RBS: Treat s128s like vectors when unmerging. — Amara Emerson / detail
- Update Python tests for lldb-server on Windows — aaron.smith / detail
- [analyzer][NFC] Prepare visitors for different tracking kinds — dkszelethus / detail
- [ORC] Fix clang-interpreter example code broken by r368707. — douglas.yung / detail
- [analyzer] Don't delete TaintConfig copy constructor — apl / detail
- [GlobalISel]: Fix lowering of G_Shuffle_vector where we pick up the — aditya_nandakumar / detail
- Fix warning: suggest braces around initialization of subobject — Jonas Devlieghere / detail
- [libcxxabi] Define _LIBCXXABI_GUARD_ABI_ARM on WebAssembly — sbc / detail
- [ELF] Initialize 2 fields of Symbol in SymbolTable::insert — maskray / detail
- Add __has_builtin support for builtin function-like type traits. — richard-llvm / detail
- [FileCheck] Move -dump-input diagnostic to first line — jdenny.ornl / detail
- [FileCheck] Document FILECHECK_OPTS in -help — jdenny.ornl / detail
- Extend coroutines to support a "returned continuation" lowering. — rjmccall / detail
- Generalize llvm.coro.suspend.retcon to allow an arbitrary number of — rjmccall / detail
- Guard dumps in the coro intrinsic validation logic behind NDEBUG checks. — rjmccall / detail
- Add intrinsics for doing frame-bound dynamic allocations within a — rjmccall / detail
- Fix a use-after-free in the coro.alloca treatment. — rjmccall / detail
- In coro.retcon lowering, don't explode if the optimizer messes around — rjmccall / detail
- Update for optimizer changes. — rjmccall / detail
- Support swifterror in coroutine lowering. — rjmccall / detail
- Remove unreachable blocks before splitting a coroutine. — rjmccall / detail
- Don't run a full verifier pass in coro-splitting's private pipeline. — rjmccall / detail
- Coroutines: adjust for SVN r358739 — rjmccall / detail
- Remove minimum toolchain soft-error — JF Bastien / detail
- Revert '[LICM] Make Loop ICM profile aware' and 'Fix pass dependency for — dlj / detail
- [LV] Fold-tail flag — dorit.nuzman / detail
- [lldb] Reinstate original guard variable check — Raphael Isemann / detail
- [NewPM][PassInstrumentation] IR printing support from clang driver — twoh / detail
- Removed dead code from clang/tools/libclang/CXIndexDataConsumer.{cpp,h} — gribozavr / detail
- [API] Have SBCommandReturnObject::GetOutput/Error return "" instead of — pavel / detail
- [InstCombine][NFC] Autogenerate checks in adjust-for-minmax.ll — lebedev.ri / detail
- Fix the -Wunused-variable warning. — hokein / detail
- [Codegen] Updated test for D66158 — david.bolvansky / detail
- [Intrinsics] Add a 'NoAlias' intrinsic property; annotate llvm.memcpy — david.bolvansky / detail
- [llvm-objdump] - Add a relocation-xindex-symbol.test test case. — grimar / detail
- [llvm/Object] - Convert SectionRef::getName() to return Expected<> — grimar / detail
- Revert r368812 "[llvm/Object] - Convert SectionRef::getName() to return — grimar / detail
- [MinGW] Remove stray/inconsistent comment chars in test file. NFC. — martin / detail
- [MinGW] Restructure Options.td to use multiclass where sensible. NFC. — martin / detail
- [MinGW] Correct handling different forms of a few options — martin / detail
- [analyzer] Note last writes to a condition only in a nested stackframe — dkszelethus / detail
- [ASTImporter] Import default expression of param before creating the — 1.int32 / detail
- [InstCombine] Refactor getFlippedStrictnessPredicateAndConstant() out of — lebedev.ri / detail
- [llvm-size][test] Improve llvm-size testing — jh7370 / detail
- Fix _WIN32 / _WIN64 Wundef warnings — sven.vanhaastregt / detail
- [AsmPrinter] Delete redundant .type foo, @function when emitting an — maskray / detail
- [clangd] Fix typos and grammar in a comment. NFC — ibiryukov / detail
- [clang] - An update after LLVM change. — grimar / detail
- Recommit r368812 "[llvm/Object] - Convert SectionRef::getName() to — grimar / detail
- Improved the doc comment for getCommentsInFile — gribozavr / detail
- [NFC] Make test more robust — david.bolvansky / detail
- Fix "not all control paths return a value" MSVC warnings. NFCI. — llvm-dev / detail
- Fix "not all control paths return a value" MSVC warning. NFCI. — llvm-dev / detail
- Fix "not all control paths return a value" MSVC warnings. NFCI. — llvm-dev / detail
- Removed ToolExecutor::isSingleProcess, it is not used by anything — gribozavr / detail
- [IR] Simplify removeDeadConstantUsers. NFC — maskray / detail
- [clangd] Loading TokenColorRules as a class mapping the rules to their — jvikstrom / detail
- [DebugInfo] MCP: collect and update DBG_VALUEs encountered in local — jeremy.morse.llvm / detail
- [analyzer][CFG] Don't track the condition of asserts — dkszelethus / detail
- [ELF][test] Update silent-ignore.test — maskray / detail
- Revert "Minidump/Windows: Fix module lookup" — pavel / detail
- [X86] Add missing regular 512-bit vXi8 extract subvector cost model — llvm-dev / detail
- gn build: Pre-merge https://reviews.llvm.org/D66195 — nicolasweber / detail
- [Clangd] NFC: Fixed comment typo — shauryab98 / detail
- [clangd] Print qualifiers of out-of-line definitions in document outline — ibiryukov / detail
- [ELF] --gdb-index: fix odd variable name cUs after r365730 and replace — maskray / detail
- [SimplifyCFG] Add "safe abs" test from CMSIS DSP 'abs_with_clamp()' — lebedev.ri / detail
- raw_ostream: add operator<< overload for std::error_code — pavel / detail
- [Tooling] Added DeclStmtClass to ExtractionSemicolonPolicy — shauryab98 / detail
- [clangd][vscode] Surface the error when applying tweaks fails — hokein / detail
- Add missing SetID method to fix Windows build — aaron.smith / detail
- [analyzer][NFC] Prove that we only track the evaluated part of the — dkszelethus / detail
- Revert "raw_ostream: add operator<< overload for std::error_code" — pavel / detail
- [AIX] Add call lowering for parameters that could pass onto FPRs — jasonliu.development / detail
- [PowerPC][NFC] Consolidate duplicate XX3Form_SetZero and XX3Form_Zero. — Jinsong Ji / detail
- [X86] Add llvm_unreachable to a switch that covers all expected values. — craig.topper / detail
- [X86][CostModel] Adjust the costs of ZERO_EXTEND/SIGN_EXTEND with less — craig.topper / detail
- [PowerPC][NFC] Add test for build all one vector with different types. — Jinsong Ji / detail
- [NFC][AIX] Change assertion — xiangxdh / detail
- [LangRef] Remove opening [ that was missing a closing ] from — craig.topper / detail
- [libTooling] Fix code to avoid unused-function warning after r368681. — yitzhakm / detail
- [NFC] Fix testcase for ARMs — david.bolvansky / detail
- [X86] Use PSADBW for v8i8 addition reductions. — craig.topper / detail
- Fix cppcheck + MSVC analyzer uninitialized member variable warning. — llvm-dev / detail
- [scudo][standalone] Add more stats to mallinfo — kostyak / detail
- Rework recursive_timed_mutex so that it uses __thread_id instead of — mclow.lists / detail
- [WebAssembly] Stop unrolling SIMD shifts since they are fixed in V8 — tlively / detail
- [mips] Split long lines in the test case file. NFC — simon / detail
- [mips] Remove redundant case in the test. NFC — simon / detail
- [LifetimeAnalysis] Fix false negatives of statement local lifetime — xazax.hun / detail
- Add missing NativeProcessFactory for lldb-server on Windows — aaron.smith / detail
- Ignore indirect branches from callbr. — isanbard / detail
- Document clang-cpp in the release notes for clang — chris.bieneman / detail
- [BuildLibCalls] Noalias annotation — david.bolvansky / detail
- [NFC] Updated tests after r368875 — david.bolvansky / detail
- Fix cppcheck + MSVC analyzer uninitialized member variable warning. — llvm-dev / detail
- [Sema][ObjC] Fix a -Wformat false positive with localizedStringForKey — erik.pilkington / detail
- [DebugLine] Improve path handling. — Jonas Devlieghere / detail
- [libc++] Do not define _LIBCPP_CLANG_VER for non-LLVM Clang — Louis Dionne / detail
- [NFC][clang] Moving argument handling: Driver::BuildActions -> — puyan / detail
- [libc++] Enable <chrono> ""d and ""y literals for AppleClang 10 and up — Louis Dionne / detail
- [CFG] Introduce CFGElementRef, a wrapper that knows it's position in a — dkszelethus / detail
- [SLC] Dereferenceable annonation - handle valid null pointers — david.bolvansky / detail
- This commit removes std::shared_ptr::make_shared and — z.zoelec2 / detail
- [InstCombine][NFC] Tests for 'try to reuse constant from select in — lebedev.ri / detail
- Move to C++14 — JF Bastien / detail
- Fix cppcheck + MSVC analyzer uninitialized member variable warning. — llvm-dev / detail
- Don't explicitly check for C++14 — JF Bastien / detail
- Remove now useless C++1y flag — JF Bastien / detail
- [DebugInfo] Consider debug label scope has an extra lexical block file — twoh / detail
- Match if / elseif properly — JF Bastien / detail
- InferAddressSpaces: Remove unnecessary check for ConstantInt — Matthew.Arsenault / detail
- InferAddressSpaces: Move target intrinsic handling to TTI — Matthew.Arsenault / detail
- Un-break the bots — JF Bastien / detail
- [CMake] Fix cache invalidation of LLVM_CXX_STD — chris.bieneman / detail
- [RLEV] Rewrite loop exit values for multiple exit loops w/o overall loop — listmail / detail
- [Support][NFC] Fix error message for posix_spawn_file_actions_addopen — Jan Korous / detail
- [PowerPC][NFC] Remove duplicate tests in build-vector-test.ll — Jinsong Ji / detail
- AMDGPU: Reduce number of registers in test — Matthew.Arsenault / detail
- Revert "Un-break the bots" — JF Bastien / detail
- [OPENMP]Support for non-rectangular loops. — a.bataev / detail
- [lldb][NFC] Remove unused function — rupprecht / detail
- [SDAG] move variable closer to use; NFC — spatel / detail
- [SLP][NFC] Use pointers to address to ScalarToTreeEntry elements, — dtemirbulatov / detail
- Add support in CMake to statically link the C++ standard library. — erich.keane / detail
- MathExtras.h: don't check for unsupported GCC versions — JF Bastien / detail
- SwapByteOrder.h: don't check for unsupported GCC versions — JF Bastien / detail
- Use std::is_final directly — JF Bastien / detail
- [libc++] Mark std::tuple CTAD test as failing on AppleClang 9 — Louis Dionne / detail
- [clang-doc] Add missing check in tests — diegoaat97 / detail
- [x86] add tests for fadd reduction; NFC — spatel / detail
- [libc++] Mark <chrono> test as unsupported on AppleClang 9 — Louis Dionne / detail
- [Bugpoint redesign] Reduced scope of variables in Delta implementation — diegof30 / detail
- Fix thread comparison by making sure we never pass our special 'not a — mclow.lists / detail
- [AMDGPU] Do not assume a default GCN target — Stanislav.Mekhanoshin / detail
- [Bugpoint redesign] Added Pass to Remove Global Variables — diegof30 / detail
- [Attributor] Use IRPosition consistently — jdoerfert / detail
- Revert "[lldb] Reinstate original guard variable check" — Raphael Isemann / detail
- [Attributor] Do not update or manifest dead attributes — jdoerfert / detail
- [Attributor] Use liveness during the creation of AAReturnedValues — jdoerfert / detail
- [AArch64][GlobalISel] Custom selection for s8 load acquire. — Amara Emerson / detail
- [Attributor] Use the AANoNull attribute directly in AADereferenceable — jdoerfert / detail
- [Attributor][NFC] Add merge/join/clamp operators to the IntegerState — jdoerfert / detail
- [SelectionDAGBuilder] Teach gather/scatter getUniformBase to look — craig.topper / detail
- [Attributor][NFC] Introduce statistics macros for new positions — jdoerfert / detail
- [Attributor][NFC] Try to eliminate warnings (debug build + fall through) — jdoerfert / detail
- [LifetimeAnalysis] Support std::stack::top() and std::optional::value() — M.Gehre / detail
- [SCEV] Rename getMaxBackedgeTakenCount to — listmail / detail
- [Attributor][NFC] Make debug output consistent — jdoerfert / detail
- [docs] Fix sphinx doc generation errors — rupprecht / detail
- [LLDB] Migrate llvm::make_unique to std::make_unique — Jonas Devlieghere / detail
- [Bugpoint redesign] Modified Functions pass to consider declarations — diegof30 / detail
- [Polly] Migrate llvm::make_unique to std::make_unique — Jonas Devlieghere / detail
- [LLD] Migrate llvm::make_unique to std::make_unique — Jonas Devlieghere / detail
- Improve anonymous class heuristic in ClangASTContext::CreateRecordType — Shafik Yaghmour / detail
- [Attributor] Try to fix "missing field 'RetInsts' initializer" warning — jdoerfert / detail
- Remove LVALUE / RVALUE workarounds — JF Bastien / detail
- Fix handling of class member access into a vector type. — richard-llvm / detail
- [www] Update DR status page to match latest version of CWG issues list. — richard-llvm / detail
- [Clang] Migrate llvm::make_unique to std::make_unique — Jonas Devlieghere / detail
- [clang-tools-extra] Migrate llvm::make_unique to std::make_unique — Jonas Devlieghere / detail
- Expose TailCallKind via the LLVM C API — devteam.codafi / detail
- [compiler-rt] Migrate llvm::make_unique to std::make_unique — Jonas Devlieghere / detail
- [sanitizer_common] Replace forkpty with posix_spawn on Darwin — jlettner / detail
- [coroutine] Fixes "cannot move instruction since its users are not — gornishanov / detail
- [NFCI] Always initialize BugReport const fields — apl / detail
- gn build: Merge r368918 — Vitaly Buka / detail
- Revert "[compiler-rt] Migrate llvm::make_unique to std::make_unique" — Jonas Devlieghere / detail
- Revert "Expose TailCallKind via the LLVM C API" — Jonas Devlieghere / detail
- [NFC] Update doc comment to fix warning. — Jonas Devlieghere / detail
- [X86] Remove some dead code and combine some repeated code that's left. — craig.topper / detail
- [NFC] Remove documentation comment to fix warning. — Jonas Devlieghere / detail
- [Tooling] Add a hack to work around issues with matcher binding in — dlj / detail
- [NFC] Fix documentation for some utility classes. — Jonas Devlieghere / detail
- [CMake] Check for C++14 instead of C++11 — Jonas Devlieghere / detail
- [llvm-objcopy] Move duplicate tablegen from objcopy and strip into one — pozulp.llvm / detail
- Fix variable mismatch between signature and body — Jonas Devlieghere / detail
- [llvm-objdump] Add warning messages if disassembly + source for — pozulp.llvm / detail
- [ELF][PPC] Improve error message for unknown relocations — maskray / detail
- [X86] Remove some unreachable code from LowerBITCAST. — craig.topper / detail
- [X86] Disable custom type legalization for v2i32/v4i16/v8i8->f64 — craig.topper / detail
- [X86] Disable custom type legalization for v2i32/v4i16/v8i8->i64. — craig.topper / detail
- [X86] Remove unneeded isel pattern for v4f32->v4i32 fp_to_sint and — craig.topper / detail
- [X86] Add test cases for _mm_movepi64_pi64 and _mm_movpi64_epi64. — craig.topper / detail
- [Clang] Pragma vectorize_predicate implies vectorize — sjoerd.meijer / detail
- [X86] Make sure load is non-volatile in the MMX_X86movdq2q (loadv2i64) — craig.topper / detail
- [X86] Add isel pattern to match VZEXT_MOVL and a v2i64 scalar_to_vector — craig.topper / detail
- [LV] fold-tail predication should be respected even with assume_safety — dorit.nuzman / detail
- [llvm-readobj][MachO] Fix section type printing — nuta / detail
- [lldb] Let LLDB depend on intrinsics_gen to fix non-deterministic module — Raphael Isemann / detail
- [clang] Loop pragma parsing. NFC. — sjoerd.meijer / detail
- MemoryBuffer: Add a missing error-check to getOpenFileImpl — pavel / detail
- [InstCombine] Precommit test case for D66216 — flo / detail
- [analyzer] Add docs for cplusplus.InnerPointer — dkszelethus / detail
- [analyzer] Warn about -analyzer-configs being meant for development — dkszelethus / detail
- [ARM] MVE trunc to i1 vectors — david.green / detail
- [llvm-objcopy] Allow 'protected' visibility to be set when using — snortotter / detail
- [ELF][AArch64] Improve error message for unknown relocations — maskray / detail
- [Support] Fix Wundef warning — sven.vanhaastregt / detail
- Revert rL368939 "Remove LVALUE / RVALUE workarounds" — russell.gallop / detail
- Add ptrmask intrinsic — flo / detail
- [AArch64] Change location of frame-record within callee-save area. — sander.desmalen / detail
- [ARM] MVE predicate store patterns — david.green / detail
- Bump llvm-go to C++14 — benny.kra / detail
- Replace llvm::integer_sequence and friends with the C++14 standard — benny.kra / detail
- [clangd] llvm::integer_sequence -> std::integer_sequence. — benny.kra / detail
- [ADT] PointerUnion: Use C++14 constexpr std::min — benny.kra / detail
- [ValueTracking] Add MustPreserveNullness arg to functions analyzing — flo / detail
- [MCA] Slightly refactor the logic in ResourceManager. NFCI — Andrea_DiBiagio / detail
- [SDAG][x86] check for relaxed math when matching an FP reduction — spatel / detail
- [ARM] Fix alignment checks for BE VLDRH — david.green / detail
- [CodeGen] Do the Simple Early Return in block-placement pass to optimize — shkzhang / detail
- [DAGCombine] MergeConsecutiveStores - fix cppcheck/MSVC extension — llvm-dev / detail
- [OpenMP] Turn on -Wall compiler warnings by default — hahnjo / detail
- [lldb][NFC] Refactor remaining completion logic to use — Raphael Isemann / detail
- [OMPT] Resolve warnings because of ints in if conditions — hahnjo / detail
- [OpenMP] Remove 'unnecessary parentheses' — hahnjo / detail
- [OpenMP] Enable warning about "implicit fallthrough" — hahnjo / detail
- [lib/Object] - Remove objdump-file-header.test — grimar / detail
- [clangd] Don't use Bind() where C++14 move capture works — benny.kra / detail
- [PowerPC] Use xxleqv to set all one vector IMM(-1). — Jinsong Ji / detail
- Remove BitVector.h include. NFCI. — llvm-dev / detail
- Remove SmallBitVector.h include. NFCI. — llvm-dev / detail
- Re-land "[compiler-rt] Migrate llvm::make_unique to std::make_unique" — Jonas Devlieghere / detail
- [MCA] Slightly refactor class RetireControlUnit, and add the ability to — Andrea_DiBiagio / detail
- [cmake] install_symlink should obey DESTDIR unconditionally — Justin Bogner / detail
- Add a proposal for a libc project under the LLVM umbrella. — sivachandra / detail
- [llvm] Migrate llvm::make_unique to std::make_unique — Jonas Devlieghere / detail
- [Hexagon] Generate vector min/max for HVX — kparzysz / detail
- [BUNDLER]Improve the test, NFC. — a.bataev / detail
- [LLVM][Alignment] Fix MSVC potential division by 0 warning (PR42911) — llvm-dev / detail
- [Support] Base RWMutex on std::shared_timed_mutex (C++14) — benny.kra / detail
- [Driver][Bundler] Improve bundling of object files. — a.bataev / detail
- Test commit #2. — George Karpenkov / detail
- [sanitizer_common] Always use posix_spawn on Darwin — jlettner / detail
- [X86] Improve cost model for subvector extraction of less than 128-bit — craig.topper / detail
- Fix lld on GCC 5.1 after the C++14 move — JF Bastien / detail
- [NewPM][PassInstrumentation] IR printing support for (Thin)LTO — twoh / detail
- [CallGraph] Refine call graph for indirect calls with !callees metadata — mark.lacey / detail
- [DebugInfo] Avoid crash from dropped fragments in LiveDebugValues — jeremy.morse.llvm / detail
- Revert "MemoryBuffer: Add a missing error-check to getOpenFileImpl" — pavel / detail
- Fix the test, NFC. — a.bataev / detail
- Link libpthread into LLVMCore.so — benny.kra / detail
- Add LLVMLibC proposal to docs/index.rst. — sivachandra / detail
- [X86] Add custom type legalization for bitcasting mmx to — craig.topper / detail
- [NFC] Added tests for 'select with ctlz to cttz' fold — david.bolvansky / detail
- Allow standards-based attributes to have leading and trailing — aaron / detail
- Change test to use uint64_t to support compiling for 32-bit — Adrian Prantl / detail
- Rename this file from cx2.c to c2x.c; NFC. — aaron / detail
- [ValueTracking] Look through ptrmask intrinsics during — flo / detail
- [NFC] Add a couple of dump routines for RegisterPressure helper classes — listmail / detail
- MVT: Add v3i16/v3f16 vectors — Matthew.Arsenault / detail
- Revert [Bugpoint redesign] Added Pass to Remove Global Variables — diegof30 / detail
- [Hexagon] Fix instruction selection for vselect v4i8 — kparzysz / detail
- Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM — daniel_l_sanders / detail
- [WebAssembly] Correctly handle va_arg of zero-sized structures — gzchen / detail
- [Sema] Implement DR2386 for C++17 structured binding — rnk / detail
- Mark the test as unsupported on darwin, NFC. — a.bataev / detail
- Fix nm on GCC 5.1 after the C++14 move — JF Bastien / detail
- gn build: Merge r369018 — nicolasweber / detail
- gn build: Merge r369039 — nicolasweber / detail
- [GWP-ASan] Implement stack frame compression. — mitchphillips / detail
- [Rewrite][NFC] Add FIXMEs and tests for RemoveLineIfEmpty bug — jdenny.ornl / detail
- [MemorySSA] Remove restrictive asserts. — asbirlea / detail
- Remove CMake >= v3.13 target_link_options. Instead, use — mitchphillips / detail
- Stop-hooks weren't getting called on step-out. Fix that. — jingham / detail
- Add missing MIR serialization text for AArch64II::MO_TAGGED. — eugeni.stepanov / detail
- [Utils][NFC] Copy bisect usage documents from commit msg into script. — Jinsong Ji / detail
- Guard fuzzer build behind Clang-only flags. — mitchphillips / detail
- [Support] Re-introduce the RWMutexImpl for macOS < 10.12 — Jonas Devlieghere / detail
- [SDAG] Minor code cleanup/standardization of atomic accessors [NFC] — listmail / detail
- [AIX] For XL, pick GCC-compatible std & default warning options — hubert.reinterpretcast / detail
- Revert "[Support] Re-introduce the RWMutexImpl for macOS < 10.12" — Jonas Devlieghere / detail
- [Bugpoint redesign] Output option can now print to STDOUT — diegof30 / detail
- [Bugpoint redesign] Added Pass to Remove Global Variables — diegof30 / detail
- Move isPointerOffset function to ValueTracking (NFC). — eugeni.stepanov / detail
- [clang-doc] Fix bitcode writer for access specifiers — diegoaat97 / detail
- [Support] Re-introduce the RWMutexImpl for macOS < 10.12 — Jonas Devlieghere / detail
- [clang-doc] Fix use of source-root flag — diegoaat97 / detail
- [NewPM][PassInstrumentation] Fix test added in r369024. — dlj / detail
- Re-instate 369051. — mitchphillips / detail
- [clang-doc] Sort index elements case insensitive — diegoaat97 / detail
- [ARM][LowOverheadLoops] Fix generated code for "revert". — efriedma / detail
- [GlobalISel] CSEMIRBuilder: Add support for G_GEP — vkeles / detail
- Moved binary off add_llvm_executable. Used add_executable instead, as — mitchphillips / detail
- [DebugLine] Don't try to guess the path style — Jonas Devlieghere / detail
- gn build: Merge r369061 — nicolasweber / detail
- gn build: Merge r369064 — nicolasweber / detail
- [clang-doc] Serialize inherited attributes and methods — diegoaat97 / detail
- [clang-tidy] Migrate objc-forbidden-subclassing to use isDerivedFrom 🚛 — mog / detail
- [PowerPC] add testcases for folding frame offset - NFC — czhengsz / detail
- [analyzer] Analysis: Silence checkers — dabis.csaba98 / detail
- Disable stack_trace_compressor_fuzzer. — mitchphillips / detail
- Revert r368987, it caused PR43016. — nicolasweber / detail
- [clang-tidy] Migrate objc-super-self to use isDerivedFrom 🚛 — mog / detail
- Remove the temporary code. NFC. — ikudrin / detail
- [lldb-server] Disable a test on Windows until it can be fixed — aaron.smith / detail
- [X86] Manually reimplement getTargetInsertSubreg in — craig.topper / detail
- [ValueTracking] Fix recurrence detection to check both PHI operands. — flo / detail
- [clangd] Remove Bind, use C++14 lambda captures instead. NFC — ibiryukov / detail
- [clangd] Added highlighting for non type templates. — jvikstrom / detail
- AssumptionCache: remove old affected values after RAUW. — Tim Northover / detail
- [DebugInfo] Handle complex expressions with spills in LiveDebugValues — jeremy.morse.llvm / detail
- [RISCV] Add inline asm constraint A for RISC-V — lewis.revill / detail
- [SLPVectorizer] Silence null dereference warning. NFCI. — llvm-dev / detail
- [RISCV] Lower inline asm constraint A for RISC-V — lewis.revill / detail
- Revert "[CallGraph] Refine call graph for indirect calls with !callees — benny.kra / detail
- [RISCV] Allow parsing of bare symbols with offsets — lewis.revill / detail
- [ASTImporter] Import ctor initializers after setting flags. — 1.int32 / detail
- Fix typos in LibASTImporter.rst — gabor.marton / detail
- [clangd] Simplify code of ClangdLSPServer::onCommand — ibiryukov / detail
- [ARM] Don't pretend we know how to generate MVE VLDn — david.green / detail
- [X86] Add test case for future MULFIX DAG combine folds. NFC — bjorn.a.pettersson / detail
- [DAGCombiner] Add simple folds for SMULFIX/UMULFIX/SMULFIXSAT — bjorn.a.pettersson / detail
- Revert [CodeGen] Do the Simple Early Return in block-placement pass to — flo / detail
- [clangd] suppress -Wparentheses warning: suggest parentheses around ‘&&’ — hokein / detail
- [x86] add tests for fdiv with variable operands; NFC — spatel / detail
- [x86] fix fdiv test; NFC — spatel / detail
- [ARM] Correct register for narrowing and widening MVE loads and stores. — david.green / detail
- [libcxxabi] __cxa_guard_require: test guard byte with != 0 instead of == — maskray / detail
- [X86] Remove unused include. NFCI. — llvm-dev / detail
- [AArch64InstrInfo] Stop getInstSizeInBytes returning non-zero for meta — paul.walker / detail
- [X86][SSE] Add shuffled load tests from PR16739 — llvm-dev / detail
- [lldb][NFC] Allow for-ranges on StringList — Raphael Isemann / detail
- [RISCV] Convert registers from unsigned to Register — luismarques / detail
- Revert rL369112 : [X86][SSE] Add shuffled load tests from PR16739 — llvm-dev / detail
- [X86][SSE] Add shuffled load tests from PR16739 — llvm-dev / detail
- [InstCombine] Shift amount reassociation in bittest: trunc-of-shl — lebedev.ri / detail
- [ARM] MVE sext of a load is free — david.green / detail
- [TextAPI] Update reader to be supported by lib/Object — Cyndy Ishida / detail
- [InstCombine] Simplify pow(2.0, itofp(y)) to ldexp(1.0, y) — e.menezes / detail
- [lld][Hexagon]Support HEX_32 when building shared objects — sidneym / detail
- Relanding r368987 [AArch64] Change location of frame-record within — sander.desmalen / detail
- [clang-doc] Fix records in global namespace — diegoaat97 / detail
- [Hexagon] Generate min/max instructions for 64-bit vectors — kparzysz / detail
- [CodeGen/Analysis] Intrinsic llvm.assume should not block tail call — carrot / detail
- [X86] Alphabetize pass initialization definitions. NFCI. — llvm-dev / detail
- [SLP] add tests for PR16739; NFC — spatel / detail
- [ELF][Hexagon] Replace R_HEXAGON_GOT with R_GOTPLT — maskray / detail
- Fix llvm-config support for CMake build-mode-style builds — jordan_rose / detail
- [ADT] Remove llvm::make_unique utility. — Jonas Devlieghere / detail
- [SLPVectorizer] Make the scheduler aware of the TreeEntry operands. — vasileios.porpodas / detail
- Revert [AArch64InstrInfo] Stop getInstSizeInBytes returning non-zero for — paul.walker / detail
- [AArch64InstrInfo] Stop getInstSizeInBytes returning non-zero for meta — paul.walker / detail
- [X86] combineExtractWithShuffle - handle extract(truncate(x), 0) — llvm-dev / detail
- [AArch64][GlobalISel] Lower G_SHUFFLE_VECTOR with 1 elt src and 1 elt — Amara Emerson / detail
- [X86] resolveTargetShuffleInputs - add DemandedElts variant. NFCI. — llvm-dev / detail
- [WebAssembly] Forbid use of EM_ASM with setjmp/longjmp — gzchen / detail
- Escape % in printf format string. — eugeni.stepanov / detail
- [clang-doc] Redesign of generated HTML files — diegoaat97 / detail
clang-d324029-ga0a47d8ac11-t976-b976.tar.gz (Aug 12, 2019 5:25:51 PM)
- Fix ClangASTContext::CreateParameterDeclaration to not call addDecl — Shafik Yaghmour / detail
- Remove support for unsupported MSVC versions — JF Bastien / detail
- Revert "Remove support for unsupported MSVC versions" — JF Bastien / detail
- [clang-doc] Add flag to continue after mapping errors — diegoaat97 / detail
- [lit] Fix 42812: lit test suite can no longer be run stand-alone — stilis / detail
- Revert Fix and test inter-procedural register allocation for ARM — douglas.yung / detail
- [PowerPC][NFC][MachinePipeliner] Add some regression testcases — Jinsong Ji / detail
- The MinGW linker supports response files — rnk / detail
- Remove support for unsupported MSVC versions — JF Bastien / detail
- [BPF] Handling type conversions correctly for CO-RE — yhs / detail
- [X86] Use the pointer VT for the Scale node when lowering x86 — craig.topper / detail
- [GlobalISel] Check LLT size matches memory size for non-truncating — Amara Emerson / detail
- [ScalarizeMaskedMemIntrin] Bitcast the mask to the scalar domain and use — craig.topper / detail
- Re-commit "[GlobalISel] Add legalization support for non-power-2 loads — Amara Emerson / detail
- Add brackets to remove warnings about ambiguous 'else's. — isanbard / detail
- Temporarily Revert "[PowerPC][NFC][MachinePipeliner] Add some regression — echristo / detail
- [ORC] Remove some old debugging output from a unit test. — Lang Hames / detail
- [clang-doc] Update documentation — diegoaat97 / detail
- MCRegister/Register: DenseMapInfo should take `const T &` — daniel_l_sanders / detail
- [ELF] Move R_*_IRELATIVE from .rel[a].plt to .rel[a].dyn unless — maskray / detail
- Add OMPT support for teams construct — hansang.bae / detail
- [InstSimplify] Add test case to show bad sign bit handling for integer — craig.topper / detail
- [Attributor] Fix dereferenceable callsite argument initialization — uenoku.tokotoko / detail
- Simplify <type_traits> implementations. — eric / detail
- Emit diagnostic if an inline asm constraint requires an immediate — isanbard / detail
- [lit] Actually run tests for internal env command — jdenny.ornl / detail
- [lit] Print internal env commands — jdenny.ornl / detail
- [Thumb] Fix invalid symbol redefinition due to duplicated jumptable — nikita.ppv / detail
- Finish moving TargetRegisterInfo::isVirtualRegister() and friends to — sylvestre / detail
- IR: print value numbers for unnamed function arguments — Tim Northover / detail
- Speculative Compilation — praveenvelliengiri / detail
- [Attributor][NFC] run clang-format on Attributor.cpp — sstipanovic / detail
- IR: Cleanup after test to silence ASAN builds — Tim Northover / detail
- Use switch instead of series of comparisons — sepavloff / detail
- [yaml2obj][tests] Replace 8-byte `od` conversion with 1-byte conversion — hubert.reinterpretcast / detail
- Fixup r367321 "Ask confirmation when `git llvm push` will push multiple — joker.eph / detail
- Revert accidental change to __member_pointer_traits_imp. — eric / detail
- [JITLink] Fix error message formatting. — Lang Hames / detail
- [JITLink] Add support for MachO/x86-64 UNSIGNED relocs with length=2. — Lang Hames / detail
- [WebAssembly] Fix allocsize attribute in sjlj lowering — keno / detail
- [x86] change free truncate hook to handle only simple types (PR42880) — spatel / detail
- [JITLink] Fix an overly-wide read in the MachO/x86-64 test case. — Lang Hames / detail
- [DAGCombiner] Prevent the combine added in r367710 from creating illegal — craig.topper / detail
- [Transforms] Do not drop !preserve.access.index metadata — yhs / detail
- Suppress -Wctad-maybe-unsupported on types w/o deduction guides. — eric / detail
- [SelectionDAG] Add node creation debug message to getMemIntrinsicNode. — craig.topper / detail
- [OpenMP 5.0] libomptarget interface for declare mapper functions. — llvm / detail
- [OpenMP 5.0] Codegen support for user-defined mappers. — llvm / detail
- Revert "[OpenMP 5.0] Codegen support for user-defined mappers." — llvm / detail
- [X86] Consistently use MVT::i8 for the constant operand of BLENDI and — craig.topper / detail
- [llvm-objdump] Re-commit r367284. — pozulp.llvm / detail
- Revert "Suppress -Wctad-maybe-unsupported on types w/o deduction — eric / detail
- [ELF][test] Delete redundant version-script-*.s tests — maskray / detail
- [Parser] Emit descriptive diagnostic for misplaced pragma — sepavloff / detail
- [ARM] MVE big endian bitcasts — david.green / detail
- [ORC] Remove a layer of indirection when locking the mutex. NFCI. — benny.kra / detail
- [X86] SimplifyMultipleUseDemandedBits - Add target shuffle support — llvm-dev / detail
- Fix signed/unsigned comparison warning. NFC. — llvm-dev / detail
- [X86] lowerShuffleAsSpecificZeroOrAnyExtend - use undef PSHUFB mask — llvm-dev / detail
- [clang-tidy] Add FixItHint for performance-noexcept-move-constructor — Zinovy Nis / detail
- [UpdateTestChecks] Add end_function directive to regex matcher for — llvm-dev / detail
- Regenerate test for an upcoming patch. — llvm-dev / detail
- [TargetLowering][X86] Teach SimplifyDemandedVectorElts to replace the — craig.topper / detail
- [Attributor][NFC] Invalid DerefState is at fixpoint — jdoerfert / detail
- [Attributor][NFC] Simplify common pattern wrt. fixpoints — jdoerfert / detail
- [Attributor][Fix] Resolve various liveness issues — jdoerfert / detail
- [Attributor][NFC] Improve debug output — jdoerfert / detail
- [Attributor][NFC] Create some attributes earlier — jdoerfert / detail
- [Driver] Support for disabling sanitizer runtime linking — phosek / detail
- gn build: Merge r367756 — nicolasweber / detail
- [Driver] Always use -z separate-code with lld on Fuchsia — phosek / detail
- [Driver] Derive Fuchsia Linker directly from Tool — phosek / detail
- [X86] Fix a bad early out in combineExtInVec that prevented recursive — craig.topper / detail
- [Driver] Don't disable -fsanitizer-coverage for safe-stack or — phosek / detail
- Rename F_{None,Text,Append} to OF_{None,Text,Append}. NFC — maskray / detail
- [DWARF] Change DWARFDebugLoc::Entry::Loc from SmallVector<char, 4> to — maskray / detail
- [Analyzer] Iterator Checkers - Fix for Crash on Iterator Differences — adam.balogh / detail
- compiler-rt: Rename .cc file in test/lsan to .cpp — maskray / detail
- Adds a warning when an inline Doxygen comment has no argument — gribozavr / detail
- [clangd] Fix error message with incorrect — sam.mccall / detail
- [clangd] Expose -offset-encoding=utf-32, which has been implemented for — sam.mccall / detail
- Remove usage of usleep in generic code — pavel / detail
- build_llvm_package.bat: Set PYTHON_EXECUTABLE (PR42724) — hans / detail
- Revert "[llvm-objdump] Re-commit r367284." — pozulp.llvm / detail
- [LLVM][Alignment] Introduce Alignment Type in DataLayout — gchatelet / detail
- Reland: Fix and test inter-procedural register allocation for ARM — oliver.stannard / detail
- Remove SymbolVendor::GetSymtab — pavel / detail
- AMDGPU: add missing llvm.amdgcn.{raw,struct}.buffer.atomic.{inc,dec} — nhaehnle / detail
- [LLVM][Alignment] Introduce Alignment In CallingConv — gchatelet / detail
- [OpenCL] Fix vector literal test broken in rL367675. — anastasia.stulova / detail
- ObjectFile[ELF]: Refactor gnu_debuglink interface — pavel / detail
- [InstCombine] Added mempcpy tests [NFC] — david.bolvansky / detail
- Sidestep false positive due to a matching git repository name — rofirrim / detail
- [TLI][NFC] Fixed typo — david.bolvansky / detail
- [LLVM][Alignment] Introduce Alignment Type — gchatelet / detail
- [CrossTU][NFCI] Refactor loadExternalAST function — endre.fulop / detail
- [lldb][NFC] Remove unimplemented — Raphael Isemann / detail
- [AArch64] Skip isZIPMask check for masks with an odd number of elements. — flo / detail
- [MVT][SVE] Map between scalable vector IR Type and VTs — graham.hunter / detail
- [llvm/Object] - Remove ELFFile<ELFT>::getSection(const StringRef — grimar / detail
- [DAGCombiner][x86] prevent infinite loop from truncate/extend transforms — spatel / detail
- Fix PDB tests after r367820 — pavel / detail
- [COFF] Omit automatically imported symbols from the symbol table — martin / detail
- [MinGW] Add an lld specific option for requesting to delay load — martin / detail
- [AST] Fix RecursiveASTVisitor visiting implicit constructor — jvikstrom / detail
- [clang][NFC] Remove unused private variable 'CI' in — Raphael Isemann / detail
- [lldb] Move redundant persistent variable counter to — Raphael Isemann / detail
- [lldb][NFC] Clang format GetNextPersistentVariableName signature — Raphael Isemann / detail
- gn build: Merge r367839 — nicolasweber / detail
- [clangd] Add a callback mechanism for handling responses from client. — hokein / detail
- Write the RequiredLibraries for 'all' in LibraryDependencies.inc in a — hans / detail
- test-release.sh: Perform the sed substitution on both files (PR42739) — hans / detail
- compiler-rt: Rename .cc file in test/hwasan to .cpp — nicolasweber / detail
- Changing representation of .cv_def_range directives in Codeview debug — nilanjana.basu87 / detail
- compiler-rt: Rename cc files in test/hwasan/TestCases subdirectories as — nicolasweber / detail
- [obj2yaml] - Teach tool to dump SHT_NULL sections. — grimar / detail
- [MCA][doc] Add a section for the 'Bottleneck Analysis'. — Andrea_DiBiagio / detail
- compiler-rt: Rename .cc file in test/dfsan to cpp — nicolasweber / detail
- compiler-rt: Rename last few cc files below test/ubsan to cpp — nicolasweber / detail
- More follow-up to r367851 — nicolasweber / detail
- [lldb][NFC] Fix documentation for — Raphael Isemann / detail
- compiler-rt: Rename remaining cc files in test/profile to cpp — nicolasweber / detail
- [AArch64] Implement initial SVE calling convention support — cullen.rhodes / detail
- [yaml2obj] - Allow overriding sh_entsize for SHT_GNU_versym sections. — grimar / detail
- Revert "Changing representation of .cv_def_range directives in Codeview — nilanjana.basu87 / detail
- [yaml2obj][tests] Fix overly restrictive od output check — hubert.reinterpretcast / detail
- compiler-rt: Rename cc files below test/sanitizer_common to cpp — nicolasweber / detail
- Move LangStandard*, InputKind::Language to Basic — ro / detail
- [lldb][clang] Reflect LangStandard.h move to clang/Basic — ro / detail
- [Driver] Properly use values-X[ca].o, values-xpg[46].o on Solaris — ro / detail
- Changing representation of .cv_def_range directives in Codeview debug — nilanjana.basu87 / detail
- gn build: Merge r367864 — nicolasweber / detail
- [ELF] Consistently prioritize non-* wildcards overs "*" in version — maskray / detail
- AMDGPU/GlobalISel: Don't reject shader types — Matthew.Arsenault / detail
- AMDGPU/GlobalISel: Alternative mappings for constants — Matthew.Arsenault / detail
- AMDGPU: Correct behavior of f16/i16 non-format store intrinsics — Matthew.Arsenault / detail
- Try to fix OOB tests on at least Windows after r367642 — nicolasweber / detail
- Try to fix OOB tests more on Windows after r367642 — nicolasweber / detail
- Undo what looks like an unintentional change in r367829 — nicolasweber / detail
- [InstCombine] add test for shl-zext with extra use; NFC — spatel / detail
- [ELF][test] Reorganize some tls-*.s tests — maskray / detail
- [llvm-readelf] Fix core note descriptions — rupprecht / detail
- AMDGPU: Correct behavior of f16 buffer loads — Matthew.Arsenault / detail
- [InstCombine] add extra use constraint for shl-zext fold — spatel / detail
- AMDGPU/LoadStoreOptimizer: Set the correct offset whem merging MMOs — tstellar / detail
- [AMDGPU] Use S_DENORM_MODE for gfx10 — Austin.Kerbow / detail
- [InstCombine] add tests for shl+mul; NFC — spatel / detail
- [llvm-readobj][test] Add llvm-readobj style test cases for r367878 — rupprecht / detail
- [AST] Fix RecursiveASTVisitorTest multiline string literal. NFC — david.green / detail
- compiler-rt: Rename cc files below test/asan to cpp — nicolasweber / detail
- Follow-up for r367863 and r367656 — nicolasweber / detail
- [docs] document -Weveything more betterer — JF Bastien / detail
- gn build: run "gn format" — nicolasweber / detail
- [InstCombine] combine mul+shl separated by zext — spatel / detail
- [AST] Fix buildbot failure because of raw string inside macro from — jvikstrom / detail
- Revert "Rename F_{None,Text,Append} to OF_{None,Text,Append}. NFC" — jan.vesely / detail
- [AArch64] Set preferred function alignment to 16 bytes on Neoverse N1 — pablo.barrio / detail
- NATIVE tablegen needs to depend on target tablegen — chris.bieneman / detail
- NFC. Documenting Native tablegen dependency — chris.bieneman / detail
- [InstCombine][NFC] Tests for non-canonical clamp-like pattern — lebedev.ri / detail
- [AArch64] Expand bcmp() for small block lengths — e.menezes / detail
- Fix build when both gtest death tests and LLVM_NODISCARD are available. — dblaikie / detail
- Robustify update_test_checks.py to non-autogened tests, and add a mode — listmail / detail
- [X86] Enable -x86-experimental-vector-widening-legalization by default. — craig.topper / detail
- [libc++] Take 2: Integrate the PSTL into libc++ — Louis Dionne / detail
- Revert "[AMDGPU] Use S_DENORM_MODE for gfx10" — gribozavr / detail
- [OpenMP 5.0] Codegen support for user-defined mappers. — llvm / detail
- [DirectoryWatcher][linux] Fix build for older kernels — Jan Korous / detail
- Try to fix failing AMDGPU disasm test, both Lin/Win agree this is 0 not — rnk / detail
- [llvm-lipo] Implement -segalign — anusha.basana / detail
- Revert "Try to fix failing AMDGPU disasm test, both Lin/Win agree this — gribozavr / detail
- [libomptarget] Harmonize emitting CUDA errors and general debug — llvm / detail
- compiler-rt: Remove .cc from all lit config files — nicolasweber / detail
- Fix another uninit read found by msan after r367829 — nicolasweber / detail
- [docs] don't use :option: for C++ compat — JF Bastien / detail
- Register/MCRegister: Add conversion operators to avoid use of implicit — daniel_l_sanders / detail
- [compiler-rt] Move FDP to include/fuzzer/FuzzedDataProvider.h for easier — mmoroz / detail
- [docs] don't use :option: for Wall Wextra — JF Bastien / detail
- [AArch64][GlobalISel] Inline tiny memcpy et al at -O0. — Amara Emerson / detail
- Fix MSVC error after r367916 — daniel_l_sanders / detail
- [ORC] Work around broken GCC/libstdc++ by adding an explicit conversion. — Lang Hames / detail
- [lldb][NFC] Refactor ClangUserExpression::UpdateLanguageForExpr — Raphael Isemann / detail
- [Sanitizer] Linux refactor shadow huge page mode handling — David CARLIER / detail
- llvm-symbolizer: Untag addresses in object files by default. — peter / detail
- [NFC][pstl] Remove stray semi-colon — Louis Dionne / detail
- BMI2 support is indicated in bit eight of EBX, not nine. See Intel SDM, — echristo / detail
- [libc++] Accept any non-zero return for .fail.cpp tests — Louis Dionne / detail
- [Attributor][Fix] Keep invokes if handlers catch asynchronous exceptions — jdoerfert / detail
- Revert Register/MCRegister: Add conversion operators to avoid use of — daniel_l_sanders / detail
- [Attributor][Fix] Do not remove instructions during manifestation — jdoerfert / detail
- [WebAssembly] Fix conflict between ret legalization and sjlj — keno / detail
- [lldb][NFC] Document and refactor — Raphael Isemann / detail
- Add "REQUIRES: x86-registered-target" to test. — peter / detail
- hwasan: Untag global variable addresses in tests. — peter / detail
- [OpenMP] Fix broken build due to new OMPT tests — hansang.bae / detail
- [Sema] Add -Wpointer-compare — George Burgess IV / detail
- Add a note to the release not about a potentially breaking optimization — listmail / detail
- [llvm-readelf] Support dumping of stack sizes sections with readelf — Wolfgang.Pieb / detail
- Build libfuzzer libcxx-static with PIC — yikong / detail
- [ORC] Add CPU name and sub-target features to detectHost — diego.caballero / detail
- [GlobalISel][CallLowering] Rename isArgumentHandler() -> — Amara Emerson / detail
- [CompilerType] Remove an unused function. — davide / detail
- [Sema] attempt to appease buildbots after r367940 — George Burgess IV / detail
- [Attributor] Deduce the "no-return" attribute for functions — jdoerfert / detail
- [OpenMP] Add support for GOMP_*_nonmonotonic_* functions — jonathan.l.peyton / detail
- [Attributor][NFCI] Avoid duplication of the InformationCache reference — jdoerfert / detail
- [Attributor] Use proper ID for attribute lookup — jdoerfert / detail
- [Attributor] Make abstract attributes stateless — jdoerfert / detail
- [Attributor] Introduce the IRAttribute helper struct — jdoerfert / detail
- Reverting D65760/r367944 due to buildbot failure. — puyan / detail
- [NFC] Remove useless static — JF Bastien / detail
- [CMake] Remove check for the readline target. — Jonas Devlieghere / detail
- [CompilerType] Simplify the interface a bit more.. — davide / detail
- [clang-doc] Fix link generation — diegoaat97 / detail
- Silence ubsan after r367926. — peter / detail
- [RISCV] Custom legalize i32 operations for RV64 to reduce signed — shiva0217 / detail
- [Attributor] Provide a generic interface to check live instructions — jdoerfert / detail
- [compiler-rt] Appending COMPILER_RT_LIBCXX_PATH -isystem include for — puyan / detail
- Revert "[CompilerType] Simplify the interface a bit more.." — davide / detail
- [Attributor][Fix] Add const qualifier — jdoerfert / detail
- Re-commit Register/MCRegister: Add conversion operators to avoid use of — daniel_l_sanders / detail
- [Attributor][NFC] Outline common pattern into helper method — jdoerfert / detail
- Fix another MSVC issue after 367965 — daniel_l_sanders / detail
- [NFC][DirectoryWatchedTests] Unlocks mutexes before signaling condition — puyan / detail
- Re-commit: [AMDGPU] Use S_DENORM_MODE for gfx10 — Austin.Kerbow / detail
- gn build: Merge r367917 — nicolasweber / detail
- gn build: Leave a comment why "-gen-searchable-table" tablegen()s are — nicolasweber / detail
- gn build: Add AMDGPU target — nicolasweber / detail
- Builtins: Start adding half versions of math builtins — Matthew.Arsenault / detail
- CodeGen: Migration to using Register — Matthew.Arsenault / detail
- Remove unused function 'SetMangledCounterparts' (NFC) — Jonas Devlieghere / detail
- [Gardening] Remove dead code from IOHandler (NFC) — Jonas Devlieghere / detail
- [Gardening] Remove dead code from ScriptInterpreterPython (NFC) — Jonas Devlieghere / detail
- [Gardening] Remove dead code from ASTDumper (NFC) — Jonas Devlieghere / detail
- [clang][DirectoryWatcher] Adding llvm::Expected error handling to — puyan / detail
- [LV][NFC] Share the LV illegality reporting with LoopVectorize. — hideki.saito / detail
- [Driver] Prioritize SYSROOT/usr/include over RESOURCE_DIR/include on — maskray / detail
- [Driver] Introduce -stdlib++-isystem — smeenai / detail
- Fix line table resolution near the end of a section — pavel / detail
- [DirectoryWatcher] Fix asserts Mac builds — smeenai / detail
- Use "isa" since the variable isn't used. — isanbard / detail
- [llvm/test/Object] - Cleanup and move out the yaml2obj tests. — grimar / detail
- [lldb][NFC] Remove unnecessary cast in ClangUserExpression — Raphael Isemann / detail
- [compiler-rt] Reverting r367962 due to Fuchsia bot build-breakage. — puyan / detail
- SymbolVendorELF: Perform build-id lookup even without a debug link — pavel / detail
- Revert r367941 "Add a note to the release not about a potentially — hans / detail
- [compiler-rt] Implement getrandom interception — Vitaly Buka / detail
- [LLVM][Alignment] Introduce Alignment In GlobalObject — gchatelet / detail
- SymbolVendor: Remove passthrough methods — pavel / detail
- [LLVM][Alignment] Introduce Alignment In Attributes — gchatelet / detail
- AArch64: use xzr/wzr for constant 0 in GlobalISel. — Tim Northover / detail
- test-release.sh: Reorder sed commands for the binary comparison — hans / detail
- [UpdateTestChecks] Apply some string concatenation cleanup — maskray / detail
- [UpdateTestChecks] Fix an incorrect %s added in r368006 — maskray / detail
- [SelectionDAG] Extend base addressing modes supported by — cullen.rhodes / detail
- Add User docs for ASTImporter — gabor.marton / detail
- ObjectFileELF: permit thread-local sections with overlapping file — pavel / detail
- Change two unnecessary uses of llvm::size(C) to C.size() — maskray / detail
- [Strict FP] Allow custom operation actions — ulrich.weigand / detail
- Support 64-bit offsets in utility classes (1/5) — ikudrin / detail
- Switch LLVM to use 64-bit offsets (2/5) — ikudrin / detail
- [X86][SSE] Add tests for min/max partial reduction — llvm-dev / detail
- [X86][SSE] Enable min/max partial reduction — llvm-dev / detail
- Try to unbreak buildbots after r368014 — ikudrin / detail
- [clangd] Compute scopes eagerly in IncludeFixer — ibiryukov / detail
- [CrossTU] Handle case when no USR could be generated during Decl search. — 1.int32 / detail
- [yaml2obj] Move core yaml2obj code into lib and include for use in unit — alexbrachetmialot / detail
- [X86] SimplifyMultipleUseDemandedBits - target shuffles might not be — llvm-dev / detail
- [llvm/test/Object] Remove redundant test case. NFC — simon / detail
- [AArch64] NFC: Add generic StackOffset to describe scalable offsets. — sander.desmalen / detail
- gn build: Merge r368021 — nicolasweber / detail
- [X86][SSE] Call SimplifyMultipleUseDemandedBits on PACKSS/PACKUS — llvm-dev / detail
- gn build: Merge r368024 — nicolasweber / detail
- [InstCombine] add tests for binop with FMF with select operands; NFC — spatel / detail
- Improve MSVC visualizations so the parser shows where we are in the code — mike / detail
- Fixed failing test cases — alexbrachetmialot / detail
- AArch64: bail instead of asserting on unexpected type in G_CONSTANT 0. — Tim Northover / detail
- [MachO] Update LLD to use 64-bit offsets with DataExtractor (3/5) — ikudrin / detail
- Update LLDB to follow changes in llvm::DWARFDebugNames::NameIndex (4/5) — ikudrin / detail
- Revert "gn build: Merge r368021" — gribozavr / detail
- Revert "[yaml2obj] Move core yaml2obj code into lib and include for use — gribozavr / detail
- Revert "Fixed failing test cases" — gribozavr / detail
- [ELF] Make binding (weak or non-weak) logic consistent for Undefined and — maskray / detail
- [ELF][ARM] Fix /DISCARD/ of section with .ARM.exidx section — peter.smith / detail
- [StructurizeCFG] Enable -structurizecfg-relaxed-uniform-regions by — tpr.llvm / detail
- [TargetLowering] SimplifyMultipleUseDemandedBits - return UNDEF for — llvm-dev / detail
- [test/Object] - Cleanup the Object\obj2yaml.test a bit. — grimar / detail
- [XCOFF][MC] report_fatal_error before dereferencing NULL — hubert.reinterpretcast / detail
- [AArch64] NFC: Generalize emitFrameOffset to support more than byte — sander.desmalen / detail
- [CMake] Add mapping for IBM XL -qnoeh and -qnortti — hubert.reinterpretcast / detail
- [libc++] Use the monorepo in the macos-trunk CI script — Louis Dionne / detail
- [AST] Traverse attributes inside DEF_TRAVERSE_DECL macro — ibiryukov / detail
- [Path] Fix bug in make_absolute logic — Jonas Devlieghere / detail
- [compiler-rt] Rename FuzzedDataProvider.h to .hpp and other minor — mmoroz / detail
- Re-land D65760/r367944 — diego.caballero / detail
- [NFC][EarlyCSE] Pre-commit unary FNeg tests. — cameron.mcinally / detail
- [ELF][PPC] Don't relax ifunc toc-indirect accesses to toc-relative — maskray / detail
- Fixed toHalfOpenFileRange assertion fail — shauryab98 / detail
- [InstCombine] Shift amount reassociation: shl-trunc-shl pattern — lebedev.ri / detail
- [TableGen] FieldInit: improve assertion message — lebedev.ri / detail
- [X86] Move CPU features for Barcelona/K10 out of line — lebedev.ri / detail
- [Syntax] Do not add a node for 'eof' into the tree — ibiryukov / detail
- [globalisel] Allow SrcOp to convert an APInt and render it as an — daniel_l_sanders / detail
- [modulemap] exclude a non-module friendly header — Kristina Brooks / detail
- [GISel]: Add GISelKnownBits analysis — aditya_nandakumar / detail
- [lldb][CMake] Generating Xcode projects — stefan.graenitz / detail
- [GISel]: Fix trivial build breakage — aditya_nandakumar / detail
- [OPENMP][OFFLOADING]Fix the test, NFC. — a.bataev / detail
- Various build fixes for lldb on MinGW — hhb / detail
- [clang-doc] Add index in each info html file — diegoaat97 / detail
- Added Delta IR Reduction Tool — diegof30 / detail
- Teach some warnings to respect gsl::Pointer and gsl::Owner attributes — xazax.hun / detail
- Revert "Added Delta IR Reduction Tool" — gribozavr / detail
- Add order-dependencies to object libraries — chris.bieneman / detail
- [SymbolFile] Remove commented out method — apl / detail
- [Attributor][modulemap] Revert r368064 but fix the build — Kristina Brooks / detail
- [libc++] Use the monorepo for the back-deployment testing scripts — Louis Dionne / detail
- [WebAssembly] Fix null pointer in createInitTLSFunction — gzchen / detail
- [X86] Remove uses of the -x86-experimental-vector-widening-legalization — craig.topper / detail
- [X86] Remove tests for -x86-experimental-vector-widening-legalization — craig.topper / detail
- [X86] Add more extract subvector cost model tests for smaller element — craig.topper / detail
- [lldb][NFC] Minor refactorings to (Clang)ExpressionSourceCode — Raphael Isemann / detail
- [clangd] Unfold SourceLocation flattening from findNameLoc in — sam.mccall / detail
- Revert [InstCombine] Shift amount reassociation: shl-trunc-shl pattern — rnk / detail
- [clang-scan-deps] Implementation of dependency scanner over minimized — Alex Lorenz / detail
- [clang-doc] Fix paths of js in import tags — diegoaat97 / detail
- [pstl][libc++] Provide uglified header names for interface headers — Louis Dionne / detail
- [NFC][ScopBuilder] Move addUserAssumptions to ScopBuilder — adamski.dominik / detail
- [Sanitizer] Linux explicitally migrate shadow mapping to Transparent — David CARLIER / detail
- [X86] Don't allow combineSIntToFP to create v2i32 vectors after type — craig.topper / detail
- fix clang-scan-deps test to match filepaths on Windows — Alex Lorenz / detail
- [Sanitizer] little typo — David CARLIER / detail
- IR: Disable verifier check for GlobalValues with private linkage named — peter / detail
- gn build: Merge r368070. — peter / detail
- gn build: Merge r368086. — peter / detail
- gn build: Merge r368054. — peter / detail
- gn build: Merge r368052. — peter / detail
- gn build: Merge r368065. — peter / detail
- [NFC][ScopBuilder] Move buildDomains and its callees to ScopBuilder. — adamski.dominik / detail
- [WebAssembly] Lower ASan constructor priority on Emscripten — gzchen / detail
- hwasan: Instrument globals. — peter / detail
- [TSAN] Fix tsan on FreeBSD after D54889 — arichardson.kde / detail
- Delay diagnosing asm constraints that require immediates until after — isanbard / detail
- Use parenthses to silence warning. — isanbard / detail
- Revert "[X86] Remove uses of the — mitchphillips / detail
- Revert "[X86] Enable -x86-experimental-vector-widening-legalization by — mitchphillips / detail
- [clang][DirectoryWatcher][NFC] Swapping asserts for llvm fatal_error in — puyan / detail
- Revert "[X86] Add more extract subvector cost model tests for smaller — mitchphillips / detail
- Regenerate mmx-arith.ll. — mitchphillips / detail
- Require lld for hwasan tests. — peter / detail
- Added Delta IR Reduction Tool — diegof30 / detail
- TLI: darwin does not support _bcmp — Alex Lorenz / detail
- [Bugpoint redesign] Added Pass to Remove Global Variables — diegof30 / detail
- [Gardening] Remove more dead code from IOHandler — Jonas Devlieghere / detail
- Added Tool as Dependency to tests & fixed warnings — diegof30 / detail
- Upstream a few small Apple changes to debugserver - arm64_32, Catalyst — Jason Molenda / detail
- [yaml2obj] Move core yaml2obj code into lib and include for use in unit — alexbrachetmialot / detail
- Fixes failing test cases on Windows for rL368119 — alexbrachetmialot / detail
- Append an executable suffix to the toolchain tool paths on Windows — gkistanova / detail
- Reverts commit r368117, r368115 and r368112 — phosek / detail
- [X86] Limit vpermil2pd/vpermil2ps immediates to 4 bits in the assembly — craig.topper / detail
- [MachineCSE][NFC] Use 'profitable' rather than 'beneficial' to name — lkail / detail
- Detect HAVE_SYS_TYPES_H in lldb — hhb / detail
- [X86] Use isInt<8> to simplify some code. NFC — craig.topper / detail
- [X86] Allow any 8-bit immediate to be used with bt/btc/btr/bts memory — craig.topper / detail
- [RISCV] Remove duplicated logic when determining the target ABI — rofirrim / detail
- Force check prof branch_weights consistency in — yevgeny.rouban / detail
- [ARM][LowOverheadLoops] Revert after read/write — sam.parker / detail
- Re-submit r367649: Improve raw_ostream so that you can "write" colors — ruiu / detail
- Remove inclusion of a private gmock header from a test — gribozavr / detail
- [unittests] Mark private gmock headers with IWYU pragmas. NFC — ibiryukov / detail
- [clangd] Added a TextMate theme parser to the vscode extension. — jvikstrom / detail
- [llvm-readelf] --notes: move 'Data size' column left by 1 — maskray / detail
- [ELF.h] - Check the case when e_shstrndx=SHN_XINDEX, but the — grimar / detail
- [obj2yaml] - MIPS: move and improve testing of the e_flags — grimar / detail
- [InstCombine] Recommit: Shift amount reassociation: shl-trunc-shl — lebedev.ri / detail
- [ELF][X86] Add --no-show-raw-insn and -soname to some i386 tests — maskray / detail
- [lldb][NFC] Fix typo in 368066 — stefan.graenitz / detail
- Simplify error message output. NFC. — ruiu / detail
- Handle /align option. — ruiu / detail
- [ARM] Generate MVE VHADDs/VHSUBs — oliver.cruickshank / detail
- gsl::Owner/gsl::Pointer: Add implicit annotations for some std types — M.Gehre / detail
- [lldb][CMake] Fix one more detail in r368066 — stefan.graenitz / detail
- Replace llvm::MutexGuard/UniqueLock with their standard equivalents — benny.kra / detail
- [lldb][NFC] Remove commented out code in — Raphael Isemann / detail
- [lldb][CMake] Workaround debugserver code-signing issue in generated — stefan.graenitz / detail
- [clang] Fix mismatched args constructing AddressSpaceAttr. — bikineev / detail
- [ELF] Fix splitting messages for duplicate symbols. — ikudrin / detail
- A more robust way of testing debug_line parser near the end of module — pavel / detail
- [TargetLowering] SimplifyDemandedBits - call — llvm-dev / detail
- Remove support for 32-bit offsets in utility classes (5/5) — ikudrin / detail
- Replace non-recursive sys::Mutex users with std::mutex — benny.kra / detail
- [Support] Base SmartMutex on std::recursive_mutex — benny.kra / detail
- ObjectFileELF: Remove NT_*** constants — pavel / detail
- [Mips] Instruction `sc` now accepts symbol as an argument — simon / detail
- [mips] Use isMicroMips() function to check enabled feature flag. NFC — simon / detail
- [mips] Make a couple of class methods plain static functions. NFC — simon / detail
- [ASTImporter] Do not import FunctionTemplateDecl in record twice. — 1.int32 / detail
- [AArch64][WinCFI] Do not pair callee-save instructions in — sander.desmalen / detail
- [X86] EltsFromConsecutiveLoads - early out for non-byte sized memory — llvm-dev / detail
- GlobalISel: factor common code from translateCall and translateInvoke. — Tim Northover / detail
- [RISCV][NFC] Document RISC-V-specific assembly constraints — selliott / detail
- ProcessElfCore: Remove linux and freebsd NT_*** constants — pavel / detail
- Try to fix windows build bots after r368153. — ikudrin / detail
- [OPENMP]Add standard macro value _OPENMP for OpenMP 5.0. — a.bataev / detail
- [EarlyCSE] Add support for unary FNeg to EarlyCSE — cameron.mcinally / detail
- [OPENMP]Set default version to OpenMP 4.5. — a.bataev / detail
- Remove LLVM mutexes from clang in favor of std::mutex — benny.kra / detail
- [UpdateTestChecks] Update tests option — david.bolvansky / detail
- [InstCombine] Propagate fast math flags through selects — jay.foad / detail
- [InstCombine] Add a TODO comment — jay.foad / detail
- Use forceinline. Necessary for nvcc to inline small functions within the — jonathanchesterfield / detail
- gn build: Merge r368119 — nicolasweber / detail
- gn build: Merge r368158 — nicolasweber / detail
- [ARM] Expand CTPOP intrinsic for MVE — oliver.cruickshank / detail
- [ExecutionContext] Return the target/process byte order. — Jonas Devlieghere / detail
- [Driver] Expand the executable path in the target create output — Jonas Devlieghere / detail
- Recommit r367901 "[X86] Enable — craig.topper / detail
- Recommit r368079 "[X86] Remove uses of the — craig.topper / detail
- Recommit r368081 "[X86] Add more extract subvector cost model tests for — craig.topper / detail
- Code completion should not ignore default parameters in functions. — sam.mccall / detail
- Support: Remove needless allocation when getMainExecutable() calls — nicolasweber / detail
- [clang][NFC] Fix typo in matcher comment — yitzhakm / detail
- DebugInfo/DWARF: Normalize DWARFObject members on the DWARF spec section — dblaikie / detail
- API update for change to LLVM's lib/DebugInfo/DWARF — dblaikie / detail
- [DataLayout] Check StackNatural and FunctionPtr alignments. — flo / detail
- [OpenMP][libomptarget] Add support for unified memory for regular maps — gheorghe-teod.bercea / detail
- [SCEV] Return zero from computeConstantDifference(X, X) — nikolai.bozhenov / detail
- [Attributor] Introduce checkForAllReadWriteInstructions(...). — sstipanovic / detail
- [ValueTracking] When calculating known bits for integer abs, make sure — craig.topper / detail
- [Tooling] Expose ExecutorConcurrency option. — diegoaat97 / detail
- [LoopVectorize][X86] Add test case for missed vectorization from — craig.topper / detail
- Fix indentation — dblaikie / detail
- Add support for deterministically linked binaries on macOS to lldb. — nicolasweber / detail
- [NFC] Added tests for x/fabs(X) fold — david.bolvansky / detail
- [NFC] Fixed newly added tests — david.bolvansky / detail
- Add target requirements for those bots which don't handle x86. — isanbard / detail
- [pstl] Make sure we install all of PSTL's include/ directory — Louis Dionne / detail
- Revert r367501 "Create unique, but identically-named ELF sections..." — llvm / detail
- [Symbol] Remove commented out code from CompileUnit — apl / detail
- [clang-doc] Parallelize reducing phase — diegoaat97 / detail
- [X86] Add test cases for missed opportunities to use pack instructions — craig.topper / detail
- [CommandObject] Remove unused function — Jonas Devlieghere / detail
- [clang-doc] Add second index for sections within info's content — diegoaat97 / detail
- [X86] Allow pack instructions to be used for 512->256 truncates when — craig.topper / detail
- [NFC][LICM] Pre-commit test for unary FNeg support in LICM. — cameron.mcinally / detail
- DebugInfo/DWARF: Remove unused return type from — dblaikie / detail
- [libc++] Take 3: Do not cleverly link against libc++abi just because it — Louis Dionne / detail
- Added Delta IR Reduction Tool — diegof30 / detail
- [LoopVectorize][X86] Clamp interleave factor if we have a known constant — craig.topper / detail
- [libc++] Remove temporary hack for D63883 — Louis Dionne / detail
- Revert Added Delta IR Reduction Tool — diegof30 / detail
- [HWASan] Use LLD for check-hwasan. — mitchphillips / detail
- Restrict the NetBSD ASan TSD fallback to !ASAN_DYNAMIC — n54 / detail
- Add a test demonstrating DWARF parse failures are not causing lld to — dblaikie / detail
- [llvm-readobj][test] Add baseline tests for FreeBSD/AMD/AMDGPU note — rupprecht / detail
- [Attributor] Provide easier checkForallReturnedValues functionality — jdoerfert / detail
- [Attributor][NFC] Avoid unnecessary liveness queries — jdoerfert / detail
- [Attributor] Introduce a state wrapper class — jdoerfert / detail
- [Attributor][NFC] Code simplification and style normalization — jdoerfert / detail
- Adjust a ValueObjectChild's offset when the child is a bitfield — Adrian Prantl / detail
- [Attributor][Stats] Locate statistics tracking with the attributes — jdoerfert / detail
- [Attributor][NFC] remove leftover and format code — jdoerfert / detail
- gdb-index: Wire up str_offsets section to avoid incorrect error message — dblaikie / detail
- Recommit "[MS] Emit S_HEAPALLOCSITE debug info in Selection DAG" with a — akhuang / detail
- [Docs] Fix (incorrect) code highlighting — Jonas Devlieghere / detail
- [ScalarizeMaskedMemIntrin] Add test case for expanding scatter. — craig.topper / detail
- [llvm-lipo] Update llvm-lipo docs for -info -thin -create -replace — anusha.basana / detail
- Update fix-it hints for std::move warnings. — rtrieu / detail
- Revert "[libc++] Take 3: Do not cleverly link against libc++abi just — Louis Dionne / detail
- [llvm-strip] Support --strip-sections — Wolfgang.Pieb / detail
- Add LLD as a requirement for hwasan tests because of change in r368111. — douglas.yung / detail
- [Utility] Remove unused function 'GetMatchSpanningIndices' — Jonas Devlieghere / detail
- Inline diagnostic text into .td file. NFC. — rtrieu / detail
- [Driver] Move LIBRARY_PATH before user inputs — maskray / detail
- Update generate_netbsd_ioctls.awk for NetBSD 9.99.3 — n54 / detail
- Sync ioctl(2) list with NetBSD 9.99.3 — n54 / detail
- [GISel][NFC]: Make members of CombinerHelper accessible in derived — aditya_nandakumar / detail
- [Materializer] Remove wrong SetSizeAndAlignmentFromType(). — davide / detail
- [X86] Add CMOV_FR32X and CMOV_FR64X to the isCMOVPseudo function. — craig.topper / detail
- [Driver] Delete XFAIL: windows-msvc after D65880/r368245 — maskray / detail
- Temporarily bump minimum compiler version — JF Bastien / detail
- Revert "Temporarily bump minimum compiler version" — JF Bastien / detail
- [ARM] Rejig MVE load store tests. NFC — david.green / detail
- [ARM] Tighten up VLDRH.32 with low alignments — david.green / detail
- [X86] Remove -x86-experimental-vector-widening-legalization command line — craig.topper / detail
- [diagtool] Use `operator<<(Colors)` to print out colored output. — ruiu / detail
- [llvm-readobj/libObject] - Introduce a custom warning handler for — grimar / detail
- [clangd] Fix implicit template instatiations appearing as topLevelDecls. — jvikstrom / detail
- [ELF] - An attemp to fix builld bit after r368260 — grimar / detail
- Remove Module::GetSymbolVendor — pavel / detail
- [ARM] Select VFMA — sam.tebbs / detail
- Fix PDB unit tests for the GetSymbolVendor deletion — pavel / detail
- Remove xcode-specific Config.h — pavel / detail
- [Extract] Fixed SemicolonExtractionPolicy for SwitchStmt and SwitchCase — shauryab98 / detail
- Add a missing include to SymbolFilePDBTests.cpp — pavel / detail
- [yaml2obj/obj2yaml] - Add a basic support for extended section indexes. — grimar / detail
- [llcm-readobj] - Fix BB after t368272. — grimar / detail
- [MIPS GlobalISel] Select jump_table and brjt — petar.avramovic / detail
- [MCA] Remove dependency from InstrBuilder in mca::Context. NFC — Andrea_DiBiagio / detail
- [TargetLowering] SimplifyDemandedBits - call — llvm-dev / detail
- [clangd] Correct the documentation, NFC. — hokein / detail
- [X86][SSE] Add x64 load use test case — llvm-dev / detail
- Fix LLDB_CONFIGURATION_DEBUG builds for the GetSymbolVendor removal — pavel / detail
- [clang-format] fix crash involving invalid preprocessor line — krasimir / detail
- Fix check in tools/gold/X86/strip_names.ll regarding unnamed args — bjorn.a.pettersson / detail
- [clangd] Remove a function accidently being added in rL368261. — hokein / detail
- [clangd] Don't include internal gtest header. — hokein / detail
- [pstl] Add a __pstl_config_site header to record the CMake configuration — Louis Dionne / detail
- [pstl] Error out when the backend is left unspecified — Louis Dionne / detail
- [libc++abi] Fix tests when pstl is enabled — Louis Dionne / detail
- [clangd] Added an early return from VisitMemberExpr in — jvikstrom / detail
- [ARM] Set default alignment to 64bits — diogo.sampaio / detail
- ObjectFileELF: Convert a unit test to a lit test — pavel / detail
- [Reassociate] add more tests with negative FP constants; NFC — spatel / detail
- [clangd] Added semantic highlighting support for primitives. — jvikstrom / detail
- [X86][SSE] matchBinaryPermuteShuffle - split INSERTPS combines — llvm-dev / detail
- [ELF][AArch64] Support for movz, movk tprel relocations — peter.smith / detail
- [lldb][CMake] Disable modules in Xcode projects — stefan.graenitz / detail
- [OPENMP]Add support for analysis of linear variables and step. — a.bataev / detail
- Add llvm.licm.disable metadata — tcorring / detail
- [FileCheck] Add missing includes in header — thomasp / detail
- [ELF][AArch64] Delete two unused RUN lines from aarch64-movw-tprel.s — maskray / detail
- Implement hh_mm_ss from P1466R3. Reviewed as — mclow.lists / detail
- [RISCV] Minimal stack realignment support — selliott / detail
- [FIX][NFC] Update clang sema test — diogo.sampaio / detail
- [pstl] Remove stray semicolon — Louis Dionne / detail
- [RISCV] Allow ABI Names in Inline Assembly Constraints — selliott / detail
- [ARM] MVE big endian loads/stores — david.green / detail
- [ARM] Add support for MVE pre and post inc loads and stores — david.green / detail
- Enable assembly output of local commons for AIX — daltenty / detail
- [X86] SimplifyDemandedVectorElts - attempt to recombine target shuffle — llvm-dev / detail
- [X86] XFormVExtractWithShuffleIntoLoad - handle shuffle mask scaling — llvm-dev / detail
- [lldb][NFC] Simplify return in MaybeHandleVariable — Raphael Isemann / detail
- [lld][WebAssembly] Add optional symbols after input file handling — sbc / detail
- [ObjC][ARC] Upgrade calls to ARC runtime functions to intrinsic calls if — Akira / detail
- [NFC][pstl] Run clang-format — Louis Dionne / detail
- [clang-doc] Protect Index with mutex during reducing and generation — diegoaat97 / detail
- lit: Use a License classifier that pypi will accept — tstellar / detail
- [libc++] Fix environment variable passing in libc++'s `SSHExecutor` — Louis Dionne / detail
- Re-commit "[PowerPC][NFC][MachinePipeliner] Add some regression — Jinsong Ji / detail
- [clang] Update `ignoringElidableConstructorCall` matcher to ignore — yitzhakm / detail
- [AArch64] Do not emit '#' before immediates in inline asm — pirama / detail
- [globalisel][legalizer] Attempt to write down the minimal legalization — daniel_l_sanders / detail
- clang: Diag running out of file handles while looking for files — nicolasweber / detail
- Recommit Devirtualize destructor of final class. — yamauchi / detail
- [X86] Make CMPXCHG16B feature imply CMPXCHG8B feature. — craig.topper / detail
- [lld][WebAssembly] Use createGlobalVariable helper function. NFC. — sbc / detail
- [clang][NFC] Move matcher ignoringElidableConstructorCall's tests to — yitzhakm / detail
- [llvm-mc] Add reportWarning() to MCContext — bcain / detail
- [clang] Add no-warn support for Wa — bcain / detail
- lit: Bump version to 0.10.0 — tstellar / detail
- Remove unused and undocumented data_offset parameter (NFC) — Adrian Prantl / detail
- [compiler-rt] Add ConsumeProbability and ConsumeFloatingPoint methods to — mmoroz / detail
- [clang] add REQUIRES to driver test case — bcain / detail
- gn build: Merge r368331. — peter / detail
- [clang] add REQUIRES: linux to driver test case — bcain / detail
- [analyzer] Fix scan-build's plist output in plist-html mode. — Artem Dergachev / detail
- [MBP] Disable aggressive loop rotate in plain mode — carrot / detail
- Fix a comment which was incorrect. — jingham / detail
- [Attributor][NFC] Include only what is needed — jdoerfert / detail
- [LegalizeTypes] Remove SplitVSETCC helper and just call — craig.topper / detail
- [SelectionDAG][X86] Move setcc mask splitting for — craig.topper / detail
- SymbolFileDWARF: Unconditionally scan through clang modules. NFCish — Adrian Prantl / detail
- [lldb][NFC] Directly use StringRef instead of temporary std::string — Raphael Isemann / detail
- Fix up fd limit diagnosis code — rnk / detail
- [X86] Improve codegen of v8i64->v8i16 and v16i32->v16i8 truncate with — craig.topper / detail
- [LICM] Support unary FNeg in LICM — cameron.mcinally / detail
- hwasan: Add a code model check for tagged globals. — peter / detail
- [lldb] Fix HAVE_LIBCOMPRESSION — hhb / detail
- [lldb][NFC] Move to StringRef in some places in IRForTarget — Raphael Isemann / detail
- Mark clang-scan-deps test as requiring thread support — rnk / detail
- Linker: Add support for GlobalIFunc. — peter / detail
- Added Delta IR Reduction Tool — diegof30 / detail
- [lldb][NFC] Modernize IRForTarget::CreateResultVariable — Raphael Isemann / detail
- [InstCombine][NFC] Added comments about constants in tests for pow->exp2 — david.bolvansky / detail
- [WebAssembly][lld] control __data_end export with config->shared — gzchen / detail
- Fix llvm.aarch64.irg properties. — eugeni.stepanov / detail
- Fix -DBUILD_SHARED_LIBS=ON build after rL368358 — sbc / detail
- Remove else-after-return — dblaikie / detail
- Change the return type of UpgradeARCRuntimeCalls to void — Akira / detail
- [lld][WebAssembly] Don't create optional symbols when outputing an — sbc / detail
- [asan_symbolize] Fix bug where the frame counter was not incremented. — Dan Liew / detail
- ELF: Move sections referred to by __start_/__stop_ symbols into the main — peter / detail
- DebugInfo/DWARF: Provide some (pretty half-hearted) error handling — dblaikie / detail
- DebugInfo: Explicitly handle errors when parsing unit DIEs — dblaikie / detail
- [ELF] Expand regions for gaps due to explicit address — maskray / detail
- [clang-scan-deps] Add minimizer support for C++20 modules. — bigcheesegs / detail
- [analyzer] ConditionBRVisitor: Fix HTML PathDiagnosticPopUpPieces — dabis.csaba98 / detail
- [analyzer] CastValueChecker: Model castAs(), getAs() — dabis.csaba98 / detail
- [X86] Remove vector promotion handling from the ReplaceNodeResults — craig.topper / detail
- [X86] Simplify ReplaceNodeResults handling for UDIV/UREM/SDIV/SREM for — craig.topper / detail
- [X86] Simplify ReplaceNodeResults handling for — craig.topper / detail
- [X86] Simplify ReplaceNodeResults handling for FP_TO_SINT/UINT for — craig.topper / detail
- [X86] Now unreachable handling for f64->v2i32/v4i16/v8i8 bitcasts from — craig.topper / detail
- [X86] Merge v2f32 and v2i32 gather/scatter handling in — craig.topper / detail
- [X86] Simplify ISD::LOAD handling in ReplaceNodeResults and ISD::STORE — craig.topper / detail
- [PowerPC] [Clang] Port SSE3, SSSE3 and SSE4 intrinsics to PowerPC — qiucf / detail
- [clang][NFC] Consolidating usage of "FinalPhase" in — puyan / detail
- [X86] Remove ISD::SETCC handling from ReplaceNodeResults. — craig.topper / detail
- [X86] Remove handler for (U/S)(ADD/SUB)SAT from ReplaceNodeResults. — craig.topper / detail
- [X86] Remove DAG combine expansion of extending masked load and — craig.topper / detail
- [X86] Remove stale FIXME from combineMaskedStore. NFC — craig.topper / detail
- Fix rpath for MacOS/iOS — hhb / detail
- Use ASSERT_THAT_ERROR instead of logAllUnhandledErrors/exit — gribozavr / detail
- [X86] Remove code that expands truncating stores from combineStore. — craig.topper / detail
- [InstSimplify] Report "Changed" also when only deleting dead — bjorn.a.pettersson / detail
- [AST] No longer visiting CXXMethodDecl bodies created by compiler when — jvikstrom / detail
- [clangd] Fixed printTemplateSpecializationArgs not printing partial — jvikstrom / detail
- [ARM][ParallelDSP] Replace SExt uses — sam.parker / detail
- [lldb][NFC] Use range-based for-loops in IRForTarget — Raphael Isemann / detail
- [lldb][NFC] Remove last C string uses from IRForTarget — Raphael Isemann / detail
- GlobalISel: pack various parameters for lowerCall into a struct. — Tim Northover / detail
- [ELF] For VS-style diagnostics, prefer printing full paths in the — ikudrin / detail
- [llvm-readobj] - Remove unwrapOrError(ErrorOr<T> EO) helper. — grimar / detail
- Add SVE opaque built-in types — richard.sandiford / detail
- [lldb][NFC] Clean up logging in IRForTarget — Raphael Isemann / detail
- Minidump/Windows: Fix module lookup — pavel / detail
- [lldb] Refactor guard variable checks in IRForTarget — Raphael Isemann / detail
- AArch64: support TLS on Darwin platforms in GlobalISel. — Tim Northover / detail
- [lldb][NFC] Fix warning about missing switch cases — Raphael Isemann / detail
- [lldb][NFC] Unify InstrList typedef in IRForTarget — Raphael Isemann / detail
- [llvm-readobj] - Remove deprecated unwrapOrError(Expected<T> EO). — grimar / detail
- [clangd] Use raw rename functions to implement the rename. — hokein / detail
- [llvm-readobj] - Remove `error(llvm::Expected<T> &&E)` — grimar / detail
- [AArch64] Set pref. func. align to 8 bytes on Neoverse E1 & Cortex-A65 — pablo.barrio / detail
- [MCA] Add flag -show-encoding to llvm-mca. — Andrea_DiBiagio / detail
- [Mips][Codegen] Fix fast-isel mixing of FGR64 and AFGR64 registers — simon / detail
- [clangd] Added highlighting for constructor initializers. — jvikstrom / detail
- [llvm-readelf]Print filename for multiple inputs and fix formatting — jh7370 / detail
- [MCA] Fix MSVC 19.16 build with libc++ — Andrea_DiBiagio / detail
- [GlobalOpt] prevent crashing on large integer types (PR42932) — spatel / detail
- [X86][SSE] Swap X86ISD::BLENDV inputs with an inverted selection mask — llvm-dev / detail
- Title: Loop Cache Analysis Summary: Implement a new analysis to estimate — whitney.uwaterloo / detail
- [sanitizer] Update symbolizer/scripts/global_symbols.txt — benny.kra / detail
- [MachinePipeliner] Avoid indeterminate order in FuncUnitSorter — Jinsong Ji / detail
- [lldb][NFC] Remove unused IRForTarget::BuildRelocation — Raphael Isemann / detail
- [DAGCombiner] remove redundant fold for X*1.0; NFC — spatel / detail
- [lldb][NFC] Assert on invalid cursors positions when creating — Raphael Isemann / detail
- [AArch64][x86] add tests for pessimization of expression with X*2.0 — spatel / detail
- More warnings regarding gsl::Pointer and gsl::Owner attributes — xazax.hun / detail
- [NFC] Added tests for D65898 — david.bolvansky / detail
- [compiler-rt] FuzzedDataProvider: use C++ headers only instead of a — mmoroz / detail
- [Transforms] Rename hasUnaryFloatFn() and getUnaryFloatFn() (NFC) — e.menezes / detail
- Title: Improve Loop Cache Analysis LIT tests. Summary: Make LIT tests — whitney.uwaterloo / detail
- Print reasonable representations of type names in llvm-nm, readelf and — sunil_srivastava / detail
- [Transforms] Fix comments for hasFloatFn() and getFloatFnName() (NFC) — e.menezes / detail
- [Transforms] Add a emitBinaryFloatFnCall() version that fetches the — e.menezes / detail
- Even more warnings utilizing gsl::Owner/gsl::Pointer annotations — xazax.hun / detail
- Rename PCH/leakfiles test so it runs on bots. — sam.mccall / detail
- [InstCombine] Refactor optimizeExp2() (NFC) — e.menezes / detail
- [TableGen] Add "InitValue": Handle operands with set bit values in — daniel_l_sanders / detail
- Fix a build bot failure and multiple warnings instances for range base — xazax.hun / detail
- [clang-format] Add link to source code in file definitions — diegoaat97 / detail
- [libFuzzer] Merge: print stats after reading the output corpus dir. — mmoroz / detail
- Revert Fix a build bot failure and multiple warnings instances for range — xazax.hun / detail
- Revert Even more warnings utilizing gsl::Owner/gsl::Pointer annotations — xazax.hun / detail
- [Docs][llvm-strip] Add help text to llvm-strip rst doc — pozulp.llvm / detail
- [libomptarget] Remove duplicate RTLRequiresFlags per device — hahnjo / detail
- gn build: Merge r368358. — peter / detail
- gn build: Merge r368392. — peter / detail
- gn build: Merge r368402. — peter / detail
- gn build: Merge r368439. — peter / detail
- gn build: Merge r368432. — peter / detail
- CodeGen: ensure 8-byte aligned String Swift CF ABI — Saleem Abdulrasool / detail
- Revert "[asan_symbolize] Fix bug where the frame counter was not — mitchphillips / detail
- [Docs][llvm-strip] Fix an indentation issue. — pozulp.llvm / detail
- Update test to explicity test with -fintegrated-as and — douglas.yung / detail
- Don't diagnose errors when a file matches an include component — rnk / detail
- [sanitizers] MSVC warning disable for clean build - — matthew.mcgovern / detail
- [MC] Don't recreate a label if it's already used — isanbard / detail
- [CodeGen] Require a name for a block addr target — isanbard / detail
- [X86] Remove custom handling for extloads from LowerLoad. — craig.topper / detail
- Fix compilation after SVN r368476 — martin / detail
- Revert "[sanitizers] MSVC warning disable for clean build" and follow-up — echristo / detail
- [clangd] Give absolute path to clang-tidy and include-fixer. HintPath — sam.mccall / detail
- Test commit. — twoh / detail
- [clang-doc] Generate an HTML index file — diegoaat97 / detail
- Revert the test commit — twoh / detail
- Remove variable only used in an assert. — echristo / detail
- [globalisel] Add G_SEXT_INREG — daniel_l_sanders / detail
- [OpenMP][libomptarget] Add support for close map modifier — gheorghe-teod.bercea / detail
- Remove leftover MF->dump()'s from r368487 that break release builds — daniel_l_sanders / detail
- [DAGCombiner] exclude x*2.0 from normal negation profitability rules — spatel / detail
- [OpenMP] Add support for close map modifier in Clang — gheorghe-teod.bercea / detail
- [Sanitizer][Darwin] Add interceptor for malloc_zone_from_ptr — jlettner / detail
- [Bugpoint redesign] Fix nonlocal URI link in doc — diegof30 / detail
- Add missing REQUIRES to r368487 — daniel_l_sanders / detail
- cfi-icall: Allow the jump table to be optionally made non-canonical. — peter / detail
- Detects whether RESOURCE_TYPE_IO is defined. — hhb / detail
- Small format fix — hhb / detail
- clangd: use -j for background index pool — sam.mccall / detail
- Attempt to reapply "Even more warnings utilizing gsl::Owner/gsl::Pointer — xazax.hun / detail
- [clangd] Disallow extraction of expression-statements. — sam.mccall / detail
- Fix a false positive warning when initializing members with gsl::Owners. — xazax.hun / detail
- [MemDep] allow to select block-scan-limit when constructing — fedor.sergeev / detail
- [X86] Fix stack probe issue on windows32. — yuanke.luo / detail
- [Sanitizer] Reenable getusershell interception — David CARLIER / detail
- [X86] Improve the diagnostic for larger than 4-bit immediate for — craig.topper / detail
- [X86] Match the IR pattern form movmsk on SSE1 only targets where v4i32 — craig.topper / detail
- [clang-format] Add SpaceInEmptyBlock option for WebKit — owenpiano / detail
- [modulemap] Add AArch64SVEACLETypes.def — Kristina Brooks / detail
- [CodeGen] Do the Simple Early Return in block-placement pass to optimize — shkzhang / detail
- [clang] Fixed x86 cpuid NSC signature — Raphael Isemann / detail
- [lldb] Fix dynamic_cast by no longer failing on variable without — Raphael Isemann / detail
- [Reassociate] try harder to convert negative FP constants to positive — spatel / detail
- [TableGen] Correct the shift to the proper bit width. — michael.hliao / detail
- [NFC][CodeGen] Modify the PI++ to ++PI in — shkzhang / detail
- [X86][SSE] Lower shuffle as ANY_EXTEND_VECTOR_INREG — llvm-dev / detail
- Add support for FreeBSD's LD_32_LIBRARY_PATH — dimitry / detail
- [NFC][InstCombine] Tests for shift amount reassociation in bittest with — lebedev.ri / detail
- [InstCombine] Shift amount reassociation in bittest: drop pointless — lebedev.ri / detail
- [InstCombine] Shift amount reassociation in bittest: relax one-use check — lebedev.ri / detail
- [NFC][InstCombine] Tests for shift amount reassociation in bittest with — lebedev.ri / detail
- [InstCombine][NFC] Use SimplifyAddInst() instead of — lebedev.ri / detail
- [X86] Remove some code from combineShuffle that seems largely — craig.topper / detail
- [X86] Remove some more code from combineShuffle that is no longer needed — craig.topper / detail
- test commit — aktoon / detail
- Revert "test commit" — aktoon / detail
- [LICM] Make Loop ICM profile aware — aktoon / detail
- Fix __clang_call_termiante's argument for foreign exceptions — aheejin / detail
- Properly handle reference initialization when detecting gsl::Pointer — xazax.hun / detail
- [ARM] Permit auto-vectorization using MVE — david.green / detail
- [MVE] Don't try to unroll vectorised MVE loops — david.green / detail
- [ARM] MVE spill vector test. NFC — david.green / detail
- [NFC][CodeGen] Use while loop instead for loop in — shkzhang / detail
- [ELF] Remove unnecessary assignment to `used` in replaceWithDefined — maskray / detail
- Properly detect temporary gsl::Owners through reference initialization — xazax.hun / detail
- [ELF] Remove redundant !isPreemptible in Symbol::computeBinding() — maskray / detail
- [ELF] Remove redundant isDefined() in Symbol::computeBinding() and — maskray / detail
- [X86] Don't use SplitOpsAndApply for ISD::USUBSAT. — craig.topper / detail
- [X86] Simplify some of the type checks in combineSubToSubus. — craig.topper / detail
- [clang-format] Expand AllowShortBlocksOnASingleLine for WebKit — owenpiano / detail
- [SelectionDAG] Widen vector results of SMULFIX/UMULFIX/SMULFIXSAT — bjorn.a.pettersson / detail
- [X86] Remove redundant ';' chars ending IR lines in lit tests. NFC — bjorn.a.pettersson / detail
- Fix pass dependency for LICM — aktoon / detail
- [X86] Support -march=tigerlake — pengfei.wang / detail
- [X86] Add some reduction add test cases that show sub-optimal code on — craig.topper / detail
- [CrossTU] Fix problem with CrossTU AST load limit and progress messages. — 1.int32 / detail
- [clangd] Highlighting auto variables as the deduced type. — jvikstrom / detail
- Improve codegen for deque. — eric / detail
- [CostModel][X86][AArch64] Add some tests for extractvalue — lebedev.ri / detail
- [clangd] Drop diags from non-written #include. — hokein / detail
- [ELF] Remove unnecessary assignment to `isPreemptible` in — maskray / detail
- [ASTImporter] Fix for import of friend class template with definition. — 1.int32 / detail
- [OpenCL] Fix lang mode predefined macros for C++ mode. — anastasia.stulova / detail
- [TargetLowering] SimplifyDemandedBits - call — llvm-dev / detail
- [InstCombine] foldShiftIntoShiftInAnotherHandOfAndInICmp(): avoid — lebedev.ri / detail
- [llvm-strings] Improve testing of llvm-strings — jh7370 / detail
- NFC. Remove trailing whitespace in test — jh7370 / detail
- [X86][SSE] Add test showing missing compute known bits PSADBW handling — llvm-dev / detail
- [X86][SSE] ComputeKnownBits - add basic PSADBW handling — llvm-dev / detail
- Cleanup unused variable. — Andrey.Churbanov / detail
- Revert r368509 "[CodeGen] Do the Simple Early Return in block-placement — hans / detail
- [OpenCL] Ignore parentheses for sampler initialization — sven.vanhaastregt / detail
- [CrossTU] User docs: remove temporary limiation with macro expansion — gabor.marton / detail
- [clangd] Remove highlightings coming from non topLevelDecls from — jvikstrom / detail
- [llvm-ar][test] Correct tests marked as expected fails — gbreynoo / detail
- [CodeGen] Do the Simple Early Return in block-placement pass to optimize — shkzhang / detail
- [DebugInfo] Remove call sites when eliminating unreachable blocks — david.stenberg / detail
- [lldb][NFC] Add unit test for lldb_private::DiagnosticManager — Raphael Isemann / detail
- [clangd] Added the vscode SemanticHighlighting feature code but did not — jvikstrom / detail
- [InstCombine] x /c fabs(x) -> copysign(1.0, x) — david.bolvansky / detail
- [RISCV] Fix ICE in isDesirableToCommuteWithShift — selliott / detail
- [llvm-ar] Accept file paths with windows format slashes — gbreynoo / detail
- Revert r368565: [CodeGen] Do the Simple Early Return in block-placement — shkzhang / detail
- [X86][SSE] Add test showing missing demanded elts PSADBW handling — llvm-dev / detail
- [llvm-readobj] Downgrade 'PT_DYNAMIC segment offset + size exceeds the — rupprecht / detail
- [lldb] Remove undocumented return value from — Raphael Isemann / detail
- [llvm-ar][NFC] Fix buildbot — rupprecht / detail
- Revert r368339 "[MBP] Disable aggressive loop rotate in plain mode" — hans / detail
- Remove outdated comment about clang not populating src2dst_offset — benny.kra / detail
- [clangd] Separate chunks with a space when rendering markdown — ibiryukov / detail
- [lldb][NFC] Minor fixes for lldb_private::DiagnosticManager — Raphael Isemann / detail
- [InstCombine] add tests for scalar-select-of-vectors; NFC — spatel / detail
- [XCOFF] Use a single symbolic constant for the size of an embeded name. — sfertile / detail
- [scudo][standalone] Minor corrections — kostyak / detail
- [ARM] Add or update a number of costmodel tests. NFC — david.green / detail
- [ARM] Put some of the TTI costmodel behind hasNeon calls. — david.green / detail
- Fix multiple lifetime warning messages for range based for loop — xazax.hun / detail
- [ARM] MVE shuffle broadcast costs — david.green / detail
- [clangd] Refactor computation of extracted expr in ExtractVariable — sam.mccall / detail
- [ASTDump] Add is_anonymous to VisitCXXRecordDecl — Shafik Yaghmour / detail
- [AMDGPU] Printf runtime binding pass — Stanislav.Mekhanoshin / detail
- [ARM] sext of a load is free — david.green / detail
- [X86] Disable use of zmm registers for varargs musttail calls under — craig.topper / detail
- [CostModel][X86][AArch64] Check all 3 cost kinds in aggregates.ll — lebedev.ri / detail
- [ThinLTO][AutoFDO] Fix memory corruption due to race condition from thin — aktoon / detail
- [NFC][PowerPC] Add the test case shrink-wrap.mir and shrink-wrap.ll for — shkzhang / detail
- [builtins] MSVC warning disable for clean build - — matthew.mcgovern / detail
- [libc++] Implement CTAD for std::tuple — Louis Dionne / detail
- [Sema] Require a complete type for __builtin_bit_cast operands — erik.pilkington / detail
- gn build: Merge r368592 — nicolasweber / detail
- [clang-doc] Generate HTML links for children namespaces/records — diegoaat97 / detail
- [asan_symbolize] Fix bug where the frame counter was not incremented. — Dan Liew / detail
- libcxxabi: Rename .hpp files to .h — nicolasweber / detail
- small follow-up to r368604 — nicolasweber / detail
- [X86] Replace call to isTruncStoreLegalOrCustom with isTruncStoreLegal. — craig.topper / detail
- [X86] Simplify creation of saturating truncating stores. — craig.topper / detail
- [X86] Add a paranoia type check to the code that detects AVG patterns — craig.topper / detail
- [X86] Remove unreachable code from LowerTRUNCATE. NFC — craig.topper / detail
- [Sema] Check __builtin_bit_cast operand for completeness before — erik.pilkington / detail
- Revert "Disable MachO TBD write tests for Windows." — Juergen Ributzka / detail
- Fix Wnewline-eof after r368598 — nicolasweber / detail
- [Symbol] GetTypeBitAlign() should return None in case of failure. — davide / detail
- Revert "[lldb] Fix dynamic_cast by no longer failing on variable without — stilis / detail
- Revert "[lldb] Refactor guard variable checks in IRForTarget" — stilis / detail
- [libFuzzer] Merge: print feature coverage number as well. — mmoroz / detail
- [GISel]: Fix a bug in KnownBits where we should have been using — aditya_nandakumar / detail
- [GWP-ASan] Update backtrace function signature. — mitchphillips / detail
- [CompilerType] Pass an ExecutionContextScope to GetTypeBitAlign. — davide / detail
- [Attributor] Make the InformationCache an Attributor member — jdoerfert / detail
- [Attributor][NFC] Add IntegerState raw_ostream << operator — jdoerfert / detail
- [X86] Allow combineTruncateWithSat to use pack instructions for i16->i8 — craig.topper / detail
- Title: Fix build warning for operator<< when using GCC 7. Authored By: — whitney.uwaterloo / detail
- [Attributor] Use the cached data layout directly — jdoerfert / detail
- [AMDGPU] Use PredicateControl in MIMGBaseOpcode. NFC. — Stanislav.Mekhanoshin / detail
- [webassembly] Apply llvm-prefer-register-over-unsigned from clang-tidy — daniel_l_sanders / detail
- [aarch64] Apply llvm-prefer-register-over-unsigned from clang-tidy to — daniel_l_sanders / detail
- [risc-v] Apply llvm-prefer-register-over-unsigned from clang-tidy to — daniel_l_sanders / detail
- [TextAPI] Fix & Add tests for tbd files version 3. — Juergen Ributzka / detail
- [WinEH] Fix catch block parent frame pointer offset — rnk / detail
- [clang] Update isDerivedFrom to support Objective-C classes 🔍 — mog / detail
clang-d323204-gd021617bf7e-t677-b677.tar.gz (Aug 2, 2019 3:21:09 PM)
- Use labmaster llvm-project in common.groovy for CTMark/test suite jobs
It should be faster than checking out the monorepo sources from GitHub. — paquette / detail - Update test suite jobs to use monorepo.
Changes to relevant test generator files:
common.groovy:
- Kill all the SVN stuff and use the monorepo instead.
- Use GIT_SHA/GIT_DISTANCE
relay.groovy:
- Set/use GIT_SHA and GIT_DISTANCE instead of LLVM_REV — paquette / detail - Update URL for last-good-build.properties
The last_good_build.properties file is no longer hosted at
http://labmaster2.local/artifacts/clang-stage1-configure-RA
Update it to point to its new home at
http://labmaster2.local/artifacts/clang-stage1-RA
(This might cause some things to break, which were relying on LLVM_REV being
set. Those things were needlessly spinning on the same compiler though, so
they really ought to be broken anyway.) — paquette / detail - Removed unused llgo builder. — gkistanova / detail
- [monorepo_build] Also write GIT_DISTANCE to the last_good_build.properties file — Azharuddin Mohammed / detail
- Use https as vcs_protocol for the systemz builder
This works around firewall issues we were seeing with http. — uweigand / detail - Slave 'lldb-x86_64-fedora': Switch to normal non-debuginfo builds again
The racy vscode testcases have been dropped from both main and lldb-mi
repositories anyway so there is nothing left to debug:
[lldb-dev] [RFC] Removing lldb-mi
https://lists.llvm.org/pipermail/lldb-dev/2019-July/015209.html — jankratochvil / detail - Slave 'lldb-x86_64-fedora': Reduce build resource requirements — jankratochvil / detail
- monorepo_build.py: Update artifact name
Incorporate the git sha and a sequentially increasing number (which can be
generated using "git describe" and an annotated tag). — Azharuddin Mohammed / detail - Reland "[zorg] Add a new build script for use with monorepo"
Summary:
monorepo-build.py is similar in functionality to the current build.py, but
with changes to make it work with the monorepo.
Differential Revision: https://reviews.llvm.org/D64028 — Azharuddin Mohammed / detail - Revert "[zorg] Add a new build script for use with monorepo"
This reverts commit c842a5a3fa0d0d7d00e206c47d58fba7288111d1 (r365440). — azharudd / detail - Fix typo
Buiilds -> Builds — Azharuddin Mohammed / detail - [lldb-cmake-standalone] Pre-populate Xcode build-tree cache with Apple-lldb-Xcode
This cache does not set install-related options. LLVM cannot install from multi-config generators. — stefan.graenitz / detail - Use https for the source code checkout of buildbot running on ppc64be-clang-lnt-test.
Patch by Kamau Bridgeman.
Differential Revision: https://reviews.llvm.org/D64221 — gkistanova / detail - Added MailNotifier for builders "llvm-clang-x86_64-win-fast" and "lld-x86_64-ubuntu-fast". — gkistanova / detail
- Removed MailNotifiers for removed builders. — gkistanova / detail
- [lldb-cmake-standalone] Pre-populate provided LLVM build-tree cache with Apple-lldb-base — stefan.graenitz / detail
- [LLDB] getLLDBCMakeBuildFactory: New parameter testTimeout
It also uses the new long timeout for slave 'lldb-x86_64-fedora'.
Differential Revision: https://reviews.llvm.org/D64719 — jankratochvil / detail - Added vcs_protocol property to specify what protocol to use for the source code checkout. — gkistanova / detail
- [zorg] Add a new build script for use with monorepo
Summary:
monorepo-build.py is similar in functionality to the currently build.py, but
with changes to make it work with the monorepo.
Reviewers: cmatthews
Reviewed By: cmatthews
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D64028 — azharudd / detail - Remove extraRecipients for sanitizer-x86_64-linux-gn
Reviewers: eugenis
Differential Revision: https://reviews.llvm.org/D64363 — Vitaly Buka / detail - Force the LibcxxAndABIBuilder to use libc++abi when building libc++
(unless otherwise specified) — ericwf / detail - Move GN bot into clang.exp
Summary:
Master avoids IRC and emails to bots in category with .exp prefix
It uses clang.exp to avoid creating new section in console.
Reviewers: gkistanova, eugenis
Differential Revision: https://reviews.llvm.org/D63909 — Vitaly Buka / detail - Add sync_source_lists_from_cmake.py step to GN bot — Vitaly Buka / detail
- [zorg] Fixes for solaris11-amd64, solaris11-sparcv9 builders
The first few days of running the Solaris 11 buildbots revealed a couple of
problems:
- The builders didn't honor the slaves' configured jobs property, but were
running with the full parallelism discovered by ninja. That massivly
impacts other builders running on these systems, so im explicitly
configuring jobs in the builder configs, too.
- Along the same line, the number of paralllel links is the worst problem
here. I had experimented with the LLVM_PARALLEL_LINK_JOBS option in
the past, but only now (in cmake/modules/HandleLLVMOptions.cmake)
discovered that it's Ninja-only. I'm reducing it to 4 here as an
experiment.
- Unlike Solaris/x86, the Solaris/SPARC configure triplet defaults to
sparc-sun-solaris2.11, which results in clang creating 32-bit
binaries by default. It turns out to be an inconsistency in
config.guess which I'm trying to get resolved. In the meantime, I'm
forcing the proper triplet on both sparc and x86.
Differential Revision: https://reviews.llvm.org/D63757 — ro / detail - Split check-debuginfo and check-lldb into two separate invocations. — Adrian Prantl / detail
- Update tests to no longer expect debuginfo-tests in an LLVM build.
<rdar://problem/51268955> — Adrian Prantl / detail - Add debuginfo-tests to the list of repositories needed by lldb-cmake-matrix. — Adrian Prantl / detail
- Tabs to spaces. NFC. — gkistanova / detail
- Allow merge build requests for lld-x86_64-win7. — gkistanova / detail
- [GN] Report check-clang-tools error as warning — Vitaly Buka / detail
- [lldb-cmake-standalone] Streamline labels of build stages — stefan.graenitz / detail
- [lldb-cmake-standalone] Build and test CMake-generated Xcode project in Debug mode — stefan.graenitz / detail
- [lldb-cmake-standalone] Build provided LLVM tree as RelWithDebInfo — stefan.graenitz / detail
- [zorg] Add solaris11-amd64, solaris11-sparcv9 builders
I'm working to provide two Solaris 11.4 build slaves with a clang builder
each, one on amd64, the other on sparcv9. I'm still working out the
details like parallelism and max_builds, but the attached patch captures
the basics, intended to be minimal.
Differential Revision: https://reviews.llvm.org/D63495 — ro / detail - Separate options into separate array elements. — Adrian Prantl / detail
- Run the debuginfo-tests as part of the lldb-cmake bot.
rdar://problem/51799130 — Adrian Prantl / detail - Remove the debuginfo-tests from the default llvm configuration.
I'm going to make them a separate bot where we have more control over what the host LLDB is.
rdar://problem/51799130 — Adrian Prantl / detail - Add lit timeout for lldb arm/aarch64 ubuntu builders
This patch adds a timeout interval of 200 seconds for any hanging tests. — omjavaid / detail - [zorg] Add lldb-arm-ubuntu builder
This patch adds lldb arm linux builder. It ll run on staging master until tests become stable.
Differential revision:https://reviews.llvm.org/D63441 — omjavaid / detail - Moved builder lld-x86_64-win7 to another machine.
Removed slave/worker as-bldslv4. — gkistanova / detail - [lldb-cmake-standalone] CMake-generated Xcode project should build the LLDB.framework — stefan.graenitz / detail
- [lldb-cmake-standalone] Invoke llvm-lit manually for CMake-generated Xcode project in order to pass --verbose flag — stefan.graenitz / detail
- [lldb-cmake-standalone] Ninja verbose flag is -v — stefan.graenitz / detail
- [lldb-cmake-standalone] Remove note about Xcode generator
This was fixed with https://reviews.llvm.org/rGa0781b6e3a3a — stefan.graenitz / detail - [lldb-cmake-standalone] Enable tests for CMake-generated Xcode project — stefan.graenitz / detail
- [lldb-cmake-standalone] Run check-lldb in TERM=vt100 — stefan.graenitz / detail
- [lldb-cmake-standalone] Checkout libc++ the same way as other subprojects — stefan.graenitz / detail
- [lldb-cmake-standalone] When invoking llmv-lit manually, make sure to build lldb-test-deps first — stefan.graenitz / detail
- Add LLVM lab buildslaves for Windows (armv7 target).
The ARMV7 buildslave configurations for a new hardware in LLVM lab.
Requested for the production buildbot http://lab.llvm.org:8011
Patch by Vlad Vereschaka.
Differential Revision: https://reviews.llvm.org/D63103 — gkistanova / detail - Removed long time off-line builders and slaves.
Builders:
llvm-mips-linux
perf-x86_64-penryn-O3
clang-openbsd-amd64
perf-x86_64-penryn-O3-polly-fast
perf-x86_64-penryn-O3-polly-parallel-fast
perf-x86_64-penryn-O3-polly-unprofitable
perf-x86_64-penryn-O3-polly
perf-x86_64-penryn-O3-polly-detect-only
lldb-amd64-ninja-freebsd11
clang-native-aarch64-full
clang-bpf-build
Slaves:
pollyperf1, pollyperf2, pollyperf3, pollyperf4, pollyperf5, pollyperf6, pollyperf7, pollyperf11, pollyperf14, pollyperf15,
mipsswbrd002, juno-aarch64-01, bpf-build-slave01, lldb-amd64-ninja-freebsd11, openbsd-amd64 — gkistanova / detail - Removed commented out builders and slaves. — gkistanova / detail
- [lldb-cmake-standalone] Point lit to build directory not to sources — stefan.graenitz / detail
- [lldb-cmake-standalone] Show full test output for failures — stefan.graenitz / detail
- [lldb-cmake-standalone] Run tests for lldb-against-buildtree — stefan.graenitz / detail
- [lldb-cmake-standalone] Avoid apostrophe in FIXME comment — stefan.graenitz / detail
- [lldb-cmake-standalone] Fix unable to find LLDB.framework dir in Xcode build — stefan.graenitz / detail
- [lldb-cmake-standalone] Fix LLVMConfig.cmake not found in LLVM install-tree — stefan.graenitz / detail
- [lldb-cmake-standalone] Fix loading initial cache script — stefan.graenitz / detail
- [lldb-cmnake-standalone] Add stage to build generated Xcode project against buildtree — stefan.graenitz / detail
- [lldb-cmnake-standalone] Use CMake cache file, use DESTDIR for ninja install, rename folder to llvm-installtree — stefan.graenitz / detail
- Add location for checking out debuginfo-tests — rnk / detail
- Try to fix clang windows bot by passing projects variable into run_steps — rnk / detail
- Run check-debuginfo on the Windows bot
cdb tests were recently added, and this will run them continuously. — rnk / detail - [zorg] Add lldb-aarch64-ubuntu builder
This patch adds lldb aarch64 linux builder. It ll run on staging master
untill tests become stable and its consistently running green.
Differential revision: https://reviews.llvm.org/D62473 — omjavaid / detail - Fix build step name — Vitaly Buka / detail
- [zorg] Build and test LLVM with GN
Reviewers: eugenis, morehouse, hctim, thakis, pcc
Differential Revision: https://reviews.llvm.org/D62020 — Vitaly Buka / detail - builder lldb-x86_64-fedora: more verbosity
Patch by: Konrad Kleine
Differential revision: https://reviews.llvm.org/D62182 — jankratochvil / detail - Removed explicit build of lib/LLVMgold.so targer. — gkistanova / detail
- Fix cfi-and-supported — Vitaly Buka / detail
- [zorg][sanitizers] Update stage1_clang_at_revison to r360832 and build lld — Vitaly Buka / detail
- [zorg] Add empty GN buildbot
Reviewers: eugenis, morehouse, hctim
Differential Revision: https://reviews.llvm.org/D61965 — Vitaly Buka / detail - [zorg] Switch between from BUILDBOT_MONO_REPO_PATH to BUILDBOT_REVISION — Vitaly Buka / detail
- Enabled 3 builds on sanitizer-buildbot1,2
They looks underutilized. — Vitaly Buka / detail - Revert "Temporary disable modules for LLDB."
We think we figured out the issue. — Jonas Devlieghere / detail - Temporary disable modules for LLDB.
We're temporarily disabling modules on the LLDB bots while we
investigate an issue with the stage-1 host compiler. — Jonas Devlieghere / detail - Updated test build step name to correspond to the actual test targets. — gkistanova / detail
clang-d323204-gd021617bf7e-t677-b677.tar.gz (Aug 2, 2019 3:21:09 PM)
- Fix runtest test-suite pgo + multisampling.
There were are at least 3 issues when combining --pgo with
--exec-multisample:
* Make clean was not called between a measurement run and the next
profiling run.
* Make all was only called on the first measurement run.
* Cmake variable TEST_SUITE_PROFILE_USE=OFF was not set on the
second and later profiling runs.
These 3 issues are fixed by this patch.
It is also questionable whether we need to run profile collection
multiple times. With the instrumentation-based profile collection, the
profiles should be deterministic between different runs, and hence there
is no value in collecting profiles multiple times.
However, if in the future there would also be support for collecting
profiles e.g. based on performance counter sampling, the profiles might
be non-deterministic in such a scenario and having multiple profiling
runs could make a lot more sense. I'm leaving that discussion for
another time. — kbeyls / detail - in test_suite run_test function, opt and self.opt is same object
Patch by Lily He
Differential Revision: https://reviews.llvm.org/D61662 — danilaml / detail
clang-d323204-gd021617bf7e-t677-b677.tar.gz (Aug 2, 2019 3:21:09 PM)
- Add geomean column earlier to dataout as Series in compare.py.
This fixes the following error when using --all.
Traceback (most recent call last):
File "test-suite/utils/compare.py", line 374, in <module>
print_result(data, limit_output, shorten_names, config.show_diff, sortkey)
File "test-suite/utils/compare.py", line 227, in print_result
dataout = add_geomean_row(d, dataout)
File "test-suite/utils/compare.py", line 139, in add_geomean_row
relative = values1 / values0
File "pyvenv/lib/python2.7/site-packages/pandas/core/ops.py", line 1583, in wrapper
result = safe_na_op(lvalues, rvalues)
File "pyvenv/lib/python2.7/site-packages/pandas/core/ops.py", line 1533, in safe_na_op
lambda x: op(x, rvalues))
File "pandas/_libs/algos.pyx", line 690, in pandas._libs.algos.arrmap
File "pyvenv/lib/python2.7/site-packages/pandas/core/ops.py", line 1533, in <lambda>
lambda x: op(x, rvalues))
TypeError: ufunc 'true_divide' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
Reviewed By: paquette
Differential Revision: https://reviews.llvm.org/D64066 — fhahn / detail - Skip test earlier if metric is not found in compare.py
This speeds up processing for inputs with lots of missing metrics, by
avoiding adding them to names.
Reviewed By: paquette
Differential Revision: https://reviews.llvm.org/D64065 — fhahn / detail - Fix more -Werror issues with obsequi. — Amara Emerson / detail
- Obsequi: fix implicit declaration of a function, breaks -Werror builds. — Amara Emerson / detail
- Enable the obsequi application for Darwin. It seems to run with no issues. — Amara Emerson / detail
- Fix support for user mode emulation when using cmake/lit.
When using user mode emulation, i.e. cross-compiling programs for a
different target and running them on a host under qemu user mode
emulation, timeit and fpcmp should have host versions, not target
versions.
Running under user mode emulation had been broken for a while,
presumably since https://reviews.llvm.org/rT341257
I first tried an alternative approach where fpcmp would be run under qemu user
mode emulation too. That in itself worked, but if going for that approach, for
orthogonality reasons, we probably should also run the other helper programs as
if they were running on the target, i.e. also under qemu user mode emulation.
I ran into issues with running timeit under qemu user mode emulation and also
running RunSafely.sh under user mode emulation doesn't seem trivial.
In the end, it seemed better to me to explicitly add a cmake option to mark
that we're running under qemu user mode emulation, and in that mode, only aim
to run the test/benchmark under qemu user mode emulation, rather than also all
the helper programs (such as fpcmp, timeit, RunSafely.sh) under it (which is
what would be needed if we just kept on using only the RUN_UNDER option for
qemu user mode emulation.
Differential Revision: https://reviews.llvm.org/D61597 — kbeyls / detail - [test-suite] Fix RISC-V Support in benchmark 1.3.0
Summary:
Fixed by backporting the upstream fix from here:
https://github.com/google/benchmark/pull/833
Reviewers: lebedev.ri
Reviewed By: lebedev.ri
Subscribers: asb, kito-cheng, shiva0217, rogfer01, rkruppe, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D64237 — lenary / detail - Revert "[test-suite] Signal error if llvm-lit was not found"
As disscussed in post-commit review, the LIT is not specified
in the zorg/buildbot/builders/ClangBuilder.py, so this broke
all test-suite bots. That is a bot problem,
i'm pulling the commit until is is resolved.
This reverts commit r364388. — lebedevri / detail - [test-suite] Signal error if llvm-lit was not found
Summary:
I'm not sure if that was intentional or not?
I found it quite surprising when trying to integrate a new external project.
Reviewers: MatzeB, homerdin, hfinkel
Reviewed By: hfinkel
Subscribers: mgorny, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60091 — lebedevri / detail - Made lambda test more robust.
The test used a lambda that could be optimized out as a constexpr lambda in
the C++17 mode, leading to a test faiure due to a missing symbol. This patch
avoids that. — ssrivastava / detail
clang-r360037-t56206-b56206.tar.gz (May 6, 2019 6:28:09 AM)
- X86DAGToDAGISel::tryVPTESTM - fix uninitialized variable warning. NFCI.
findBroadcastedOp should always initialize the value if it returns true but static-analyzer isn't great at recognising this. — rksimon / detail - [test] Remove redundant bracket in rL360035 — maskray / detail
- Try fix Windows bot after rL360015 — maskray / detail
- Try fix Windows bot after rL360015
http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/25599/steps/test/logs/stdio — maskray / detail
clang-r360033-t56204-b56204.tar.gz (May 6, 2019 5:27:54 AM)
- [llvm-c-test] Make include-all.c do what its name says it does
The purpose of this file is to make sure that all includes in llvm-c
works when included from a C source file (i.e no C++isms sneaked in).
To do this it must actually include all the include files.
Reviewed By: whitequark
Differential Revision: https://reviews.llvm.org/D61567 — andersg / detail
clang-r360033-t56204-b56204.tar.gz (May 6, 2019 5:27:54 AM)
- [clang-tidy] Extend bugprone-sizeof-expression check to detect sizeof misuse in pointer arithmetic
Some programmers tend to forget that subtracting two pointers results in the
difference between them in number of elements of the pointee type instead of
bytes. This leads to codes such as `size_t size = (p - q) / sizeof(int)` where
`p` and `q` are of type `int*`. Or similarily, `if (p - q < buffer_size *
sizeof(int)) { ... }`. This patch extends `bugprone-sizeof-expression` to
detect such cases.
Differential Revision: https://reviews.llvm.org/D61422 — baloghadamsoftware / detail
clang-r360031-t56203-b56203.tar.gz (May 6, 2019 4:31:44 AM)
- [LoadStoreVectorizer] vectorizeStoreChain - ensure we find a store type.
Properly initialize store type to null then ensure we find a real store type in the chain.
Fixes scan-build null dereference warning and makes the code clearer. — rksimon / detail - [CodeGen] Move X86 tests under the X86 directory — maskray / detail
- [X86] X86InstrInfo::findThreeSrcCommutedOpIndices - fix unread variable warning.
scan-build was reporting that CommutableOpIdx1 never used its original initialized value - move it down to where its first used to make the real initialization more obvious (and matches the comment that's there). — rksimon / detail - [X86] lowerVectorShuffle - use any_of to detect out of bounds shuffle indices. NFCI.
Fixes cppcheck local shadow warning as well. — rksimon / detail - [Analysis] Remove duplicated std::move from LocRange constructor
scan-build was reporting that we were referencing a moved variable - in fact we were moving it twice..... — rksimon / detail
clang-r360031-t56203-b56203.tar.gz (May 6, 2019 4:31:44 AM)
- Revert r359949 "[clang] adding explicit(bool) from c++2a"
This caused Clang to start erroring on the following:
struct S {
template <typename = int> explicit S();
};
struct T : S {};
struct U : T {
U();
};
U::U() {}
$ clang -c /tmp/x.cc
/tmp/x.cc:10:4: error: call to implicitly-deleted default constructor of 'T'
U::U() {}
^
/tmp/x.cc:5:12: note: default constructor of 'T' is implicitly deleted
because base class 'S' has no default constructor
struct T : S {};
^
1 error generated.
See discussion on the cfe-commits email thread.
This also reverts the follow-ups r359966 and r359968.
> this patch adds support for the explicit bool specifier.
>
> Changes:
> - The parsing for the explicit(bool) specifier was added in ParseDecl.cpp.
> - The storage of the explicit specifier was changed. the explicit specifier was stored as a boolean value in the FunctionDeclBitfields and in the DeclSpec class. now it is stored as a PointerIntPair<Expr*, 2> with a flag and a potential expression in CXXConstructorDecl, CXXDeductionGuideDecl, CXXConversionDecl and in the DeclSpec class.
> - Following the AST change, Serialization, ASTMatchers, ASTComparator and ASTPrinter were adapted.
> - Template instantiation was adapted to instantiate the potential expressions of the explicit(bool) specifier When instantiating their associated declaration.
> - The Add*Candidate functions were adapted, they now take a Boolean indicating if the context allowing explicit constructor or conversion function and this boolean is used to remove invalid overloads that required template instantiation to be detected.
> - Test for Semantic and Serialization were added.
>
> This patch is not yet complete. I still need to check that interaction with CTAD and deduction guides is correct. and add more tests for AST operations. But I wanted first feedback.
> Perhaps this patch should be spited in smaller patches, but making each patch testable as a standalone may be tricky.
>
> Patch by Tyker
>
> Differential Revision: https://reviews.llvm.org/D60934 — hans / detail
clang-r360031-t56203-b56203.tar.gz (May 6, 2019 4:31:44 AM)
- [clangd] Boost code completion results that were named in the last few lines.
Summary:
The hope is this will catch a few patterns with repetition:
SomeClass* S = ^SomeClass::Create()
int getFrobnicator() { return ^frobnicator_; }
// discard the factory, it's no longer valid.
^MyFactory.reset();
Without triggering antipatterns too often:
return Point(x.first, x.^second);
I'm going to gather some data on whether this turns out to be a win overall.
Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, jfb, kadircet, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D61537 — sammccall / detail - [clangd] Qualify uses of ::testing everywhere. NFC
Add an initial '::' qualifier to all usages of 'testing' namespace that
did not have one.
The goal is to make our code style in tests more consistent. — ibiryukov / detail
clang-r360023-t56202-b56202.tar.gz (May 6, 2019 3:44:19 AM)
- [NFC] Update memcpy tests
Summary: Runs utils/update_llc_test_checks.py on a few memcpy files
Reviewers: courbet
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61507
Remove cfi noise by adding nounwind — gchatelet / detail - [X86] Move files to correct directories after D60552 — maskray / detail
- [SimplifyLibCalls] Simplify bcmp too.
Summary: Fixes PR40699.
Reviewers: gchatelet
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61585 — courbet / detail - [NFC] This is a test for the commit access.
Summary: Signed-off-by: Pengfei Wang <pengfei.wang@intel.com>
Reviewers: LuoYuanke
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61580 — pengfei / detail - Enable AVX512_BF16 instructions, which are supported for BFLOAT16 in Cooper Lake
Summary:
1. Enable infrastructure of AVX512_BF16, which is supported for BFLOAT16 in Cooper Lake;
2. Enable VCVTNE2PS2BF16, VCVTNEPS2BF16 and DPBF16PS instructions, which are Vector Neural Network Instructions supporting BFLOAT16 inputs and conversion instructions from IEEE single precision.
VCVTNE2PS2BF16: Convert Two Packed Single Data to One Packed BF16 Data.
VCVTNEPS2BF16: Convert Packed Single Data to Packed BF16 Data.
VDPBF16PS: Dot Product of BF16 Pairs Accumulated into Packed Single Precision.
For more details about BF16 isa, please refer to the latest ISE document: https://software.intel.com/en-us/download/intel-architecture-instruction-set-extensions-programming-reference
Author: LiuTianle
Reviewers: craig.topper, smaslov, LuoYuanke, wxiao3, annita.zhang, RKSimon, spatel
Reviewed By: craig.topper
Subscribers: kristina, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60550 — luoyuanke / detail
clang-r360023-t56202-b56202.tar.gz (May 6, 2019 3:44:19 AM)
- [X86] Move files to correct directories after D60552 — maskray / detail
- Enable intrinsics of AVX512_BF16, which are supported for BFLOAT16 in Cooper Lake
Summary:
1. Enable infrastructure of AVX512_BF16, which is supported for BFLOAT16 in Cooper Lake;
2. Enable intrinsics for VCVTNE2PS2BF16, VCVTNEPS2BF16 and DPBF16PS instructions, which are Vector Neural Network Instructions supporting BFLOAT16 inputs and conversion instructions from IEEE single precision.
For more details about BF16 intrinsic, please refer to the latest ISE document: https://software.intel.com/en-us/download/intel-architecture-instruction-set-extensions-programming-reference
Patch by LiuTianle
Reviewers: craig.topper, smaslov, LuoYuanke, wxiao3, annita.zhang, spatel, RKSimon
Reviewed By: craig.topper
Subscribers: mgorny, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D60552 — luoyuanke / detail
clang-r360023-t56202-b56202.tar.gz (May 6, 2019 3:44:19 AM)
- [clangd] Always call getFormatStyleForFile().
This means "format" will no longer return an error if the -fallback-style flag
is invalid, it will log and use LLVM style. This doesn't really matter.
Also document the dependence on global variables. (This patch is a
compromise - it's probably not worth actually avoiding the globals). — sammccall / detail - [clangd] Support -fallback-style, similar to clang-format.
Reviewers: kadircet
Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D61519 — sammccall / detail
clang-r360015-t56196-b56196.tar.gz (May 6, 2019 1:49:20 AM)
- DWARF v5: fix directory index in the line table
Summary:
Prior to DWARF v5, a directory index of 0 represents DW_AT_comp_dir.
In DWARF v5, the index starts with 0 and Entry.DirIdx is the index into
Prologue.IncludeDirectories.
Reviewed By: labath
Differential Revision: https://reviews.llvm.org/D61253 — maskray / detail - [DebugInfo] GlobalOpt DW_OP_deref_size instead of DW_OP_deref.
Optimization pass lib/Transforms/IPO/GlobalOpt.cpp needs to insert
DW_OP_deref_size instead of DW_OP_deref to be compatible with big-endian
targets for same reasons as in D59687.
Differential Revision: https://reviews.llvm.org/D60611 — markus / detail
clang-r360012-t56194-b56194.tar.gz (May 6, 2019 12:59:32 AM)
- [llvm-c] Make LLVMGetStringErrorTypeId a proper prototype
In C a function declaration with an empty argument list isn't a real
prototype, it will allow calling the function with any number of
arguments. It will also cause warnings when used in C code compiled with
'-Wstrict-prototypes'
Reviewed By: whitequark
Differential Revision: https://reviews.llvm.org/D61568 — andersg / detail
clang-r360012-t56194-b56194.tar.gz (May 6, 2019 12:59:32 AM)
- P1286R2: Remove restriction that the exception specification of a
defaulted special member matches the implicit exception specification. — rsmith / detail - Use DiagRuntimeBehavior for -Wunsequenced to weed out false positives
where either the modification or the other access is unreachable.
This reverts r359984 (which reverted r359962). The bug in clang-tidy's
test suite exposed by the original commit was fixed in r360009. — rsmith / detail
clang-r360012-t56194-b56194.tar.gz (May 6, 2019 12:59:32 AM)
clang-r360008-t56193-b56193.tar.gz (May 5, 2019 10:45:54 PM)
- [SelectionDAG] Replace llvm_unreachable at the end of getCopyFromParts with a report_fatal_error.
Based on PR41748, not all cases are handled in this function.
llvm_unreachable is treated as an optimization hint than can prune code paths
in a release build. This causes weird behavior when PR41748 is encountered on a
release build. It appears to generate an fp_round instruction from the floating
point code.
Making this a report_fatal_error prevents incorrect optimization of the code
and will instead generate a message to file a bug report. — ctopper / detail
clang-r360008-t56193-b56193.tar.gz (May 5, 2019 10:45:54 PM)
- [c++20] Implement P1009R2: allow omitting the array bound in an array
new expression.
This was voted into C++20 as a defect report resolution, so we
retroactively apply it to all prior language modes (though it can never
actually be used before C++11 mode). — rsmith / detail - The 'CodeGenObjC/illegal-UTF8.m' get failed with Clang built with 32-bit targets only (as example ARM-only) with the following error:
error: unable to create target: 'No available targets are compatible with triple "< ... any 64-bit target triple ... >"'
I didn't find any 64-bit dependencies for the test and I think removing '-m64' option should fix the problem and allow this test for any target specified by LLVM_DEFAULT_TARGET_TRIPLE.
Patch by Vlad Vereschaka.
Differential Revision: https://reviews.llvm.org/D61345 — gkistanova / detail
clang-r360008-t56193-b56193.tar.gz (May 5, 2019 10:45:54 PM)
clang-r360004-t56189-b56189.tar.gz (May 5, 2019 7:39:17 PM)
- [libcxxabi] Don't use -fvisibility-global-new-delete-hidden when not defining them
When builing the hermetic static library, the compiler switch
-fvisibility-global-new-delete-hidden is necessary to get the new and
delete operator definitions made correctly. However, when those
definitions are not included in the library, then this switch does harm.
With lld (though not all linkers) setting STV_HIDDEN on SHN_UNDEF
symbols makes it an error to leave them undefined or defined via dynamic
linking that should generate PLTs for -shared linking (lld makes this a
hard error even without -z defs). Though leaving the symbols undefined
would usually work in practice if the linker were to allow it (and the
user didn't pass -z defs), this actually indicates a real problem that
could bite some target configurations more subtly at runtime. For
example, x86-32 ELF -fpic code generation uses hidden visibility on
declarations in the caller's scope as a signal that the call will never
be resolved to a PLT entry and so doesn't have to meet the special ABI
requirements for PLT calls (setting %ebx). Since these functions might
actually be resolved to PLT entries at link time (we don't know what the
user is linking in when the hermetic library doesn't provide all the
symbols itself), it's not safe for the compiler to treat their
declarations at call sites as having hidden visibility.
Differential Revision: https://reviews.llvm.org/D61572 — phosek / detail - [libcxx] Don't use -fvisibility-global-new-delete-hidden when not defining them
When builing the hermetic static library, the compiler switch
-fvisibility-global-new-delete-hidden is necessary to get the new and
delete operator definitions made correctly. However, when those
definitions are not included in the library, then this switch does harm.
With lld (though not all linkers) setting STV_HIDDEN on SHN_UNDEF
symbols makes it an error to leave them undefined or defined via dynamic
linking that should generate PLTs for -shared linking (lld makes this a
hard error even without -z defs). Though leaving the symbols undefined
would usually work in practice if the linker were to allow it (and the
user didn't pass -z defs), this actually indicates a real problem that
could bite some target configurations more subtly at runtime. For
example, x86-32 ELF -fpic code generation uses hidden visibility on
declarations in the caller's scope as a signal that the call will never
be resolved to a PLT entry and so doesn't have to meet the special ABI
requirements for PLT calls (setting %ebx). Since these functions might
actually be resolved to PLT entries at link time (we don't know what the
user is linking in when the hermetic library doesn't provide all the
symbols itself), it's not safe for the compiler to treat their
declarations at call sites as having hidden visibility.
Differential Revision: https://reviews.llvm.org/D61571 — phosek / detail
clang-r360004-t56189-b56189.tar.gz (May 5, 2019 7:39:17 PM)
- [clang-tidy] openmp-exception-escape check: point to the structured-block
I'm not sure what i was thinking when i wrote it to point at the directive.
It's at the very least confusing, and in the `for` is very misleading.
We should point at the actual Stmt out of which the exception escapes,
to highlight where it should be fixed e.g. via adding try-catch block.
Yes, this breaks existing NOLINT, which is why this change needs to
happen now, not any later. — lebedevri / detail
clang-r360004-t56189-b56189.tar.gz (May 5, 2019 7:39:17 PM)
- [libcxx] Don't use -fvisibility-global-new-delete-hidden when not defining them
When builing the hermetic static library, the compiler switch
-fvisibility-global-new-delete-hidden is necessary to get the new and
delete operator definitions made correctly. However, when those
definitions are not included in the library, then this switch does harm.
With lld (though not all linkers) setting STV_HIDDEN on SHN_UNDEF
symbols makes it an error to leave them undefined or defined via dynamic
linking that should generate PLTs for -shared linking (lld makes this a
hard error even without -z defs). Though leaving the symbols undefined
would usually work in practice if the linker were to allow it (and the
user didn't pass -z defs), this actually indicates a real problem that
could bite some target configurations more subtly at runtime. For
example, x86-32 ELF -fpic code generation uses hidden visibility on
declarations in the caller's scope as a signal that the call will never
be resolved to a PLT entry and so doesn't have to meet the special ABI
requirements for PLT calls (setting %ebx). Since these functions might
actually be resolved to PLT entries at link time (we don't know what the
user is linking in when the hermetic library doesn't provide all the
symbols itself), it's not safe for the compiler to treat their
declarations at call sites as having hidden visibility.
Differential Revision: https://reviews.llvm.org/D61571 — phosek / detail
clang-r360001-t56187-b56187.tar.gz (May 5, 2019 3:14:58 PM)
- [X86] Pull out repeated Subtarget feature tests. NFCI.
Avoids a scan-build "uninitialized value" warning in X86FastISel::X86SelectFPExtOrFPTrunc — rksimon / detail - [TargetLowering] getValueType - use dyn_cast directly to find VectorType. NFCI.
Matches what we do in other getValueType functions and fixes a null dereference warning in scan-build.
Also cleans up the rest of the function - use auto and standardize the variable names. — rksimon / detail
clang-r359999-t56184-b56184.tar.gz (May 5, 2019 2:18:33 PM)
clang-r359999-t56184-b56184.tar.gz (May 5, 2019 2:18:33 PM)
- [analyzer][UninitializedObjectChecker] PR41741: Regard all scalar types as primitive.
https://bugs.llvm.org/show_bug.cgi?id=41741
Pretty much the same as D61246 and D61106, this time for __complex__ types. Upon
further investigation, I realized that we should regard all types
Type::isScalarType returns true for as primitive, so I merged
isMemberPointerType(), isBlockPointerType() and isAnyComplexType()` into that
instead.
I also stumbled across yet another bug,
https://bugs.llvm.org/show_bug.cgi?id=41753, but it seems to be unrelated to
this checker.
Differential Revision: https://reviews.llvm.org/D61569 — szelethus / detail
clang-r359997-t56182-b56182.tar.gz (May 5, 2019 1:22:08 PM)
- [NFC] BasicBlock: generalize replaceSuccessorsPhiUsesWith(), take Old bb
Thus it does not assume that the old basic block is the basic block
for which we are looking at successors.
Not reviewed, but seems rather trivial, in line with the rest of
previous few patches. — lebedevri / detail - [NFC] BasicBlock: refactor changePhiUses() out of replacePhiUsesWith(), use it
Summary:
It is a common thing to loop over every `PHINode` in some `BasicBlock`
and change old `BasicBlock` incoming block to a new `BasicBlock` incoming block.
`replaceSuccessorsPhiUsesWith()` already had code to do that,
it just wasn't a function.
So outline it into a new function, and use it.
Reviewers: chandlerc, craig.topper, spatel, danielcdh
Reviewed By: craig.topper
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61013 — lebedevri / detail - [NFC] PHINode: introduce replaceIncomingBlockWith() function, use it
Summary:
There is `PHINode::getBasicBlockIndex()`, `PHINode::setIncomingBlock()`
and `PHINode::getNumOperands()`, but no function to replace every
specified `BasicBlock*` predecessor with some other specified `BasicBlock*`.
Clearly, there are a lot of places that could use that functionality.
Reviewers: chandlerc, craig.topper, spatel, danielcdh
Reviewed By: craig.topper
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61011 — lebedevri / detail - [NFC] Instruction: introduce replaceSuccessorWith() function, use it
Summary:
There is `Instruction::getNumSuccessors()`, `Instruction::getSuccessor()`
and `Instruction::setSuccessor()`, but no function to replace every
specified `BasicBlock*` successor with some other specified `BasicBlock*`.
I've found one place where it should clearly be used.
Reviewers: chandlerc, craig.topper, spatel, danielcdh
Reviewed By: craig.topper
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61010 — lebedevri / detail - [NFC][Utils] deleteDeadLoop(): add an assert that exit block has some non-PHI instruction
Summary:
If `deleteDeadLoop()` is called on such a loop, that has "bad" exit block,
one that e.g. has no terminator instruction, the `DIBuilder::insertDbgValueIntrinsic()`
will be told to insert the Dbg Value Intrinsic after `nullptr`
(since there is no first non-PHI instruction), which will cause it to not insert
those instructions into any basic block. The instructions will be parent-less,
and IR verifier will complain. It is rather obvious to track down the root cause
when that happens, so let's just assert it never happens.
Reviewers: sanjoy, davide, vsk
Reviewed By: vsk
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61008 — lebedevri / detail
clang-r359991-t56181-b56181.tar.gz (May 5, 2019 12:25:46 PM)
- Move getOpcode() call into if statement. NFCI.
Avoids a cppcheck "Local variable name shadows outer variable" warning. — rksimon / detail - Precommit an FNeg InstructionSimplify test. — mcinally / detail
- [SLPVectorizer] Prefer pre-increments. NFCI. — rksimon / detail
clang-r359988-t56179-b56179.tar.gz (May 5, 2019 11:29:13 AM)
- [LLParser] Remove unused variable after r359987. NFC — ctopper / detail
- [LLParser] Remove unnecessary error check making sure NUW/NSW flags aren't set on a non-integer operation.
Summary: This check appears to be a leftover from when add/sub/mul could be either integer or fp. The NSW/NUW flags are only set for add/sub/mul/shl earlier. And we check that those operations only have integer types just below this. So it seems unnecessary to explicitly error for NUW/NSW being used on a add/sub/mul that have the wrong type that would later error for that.
Reviewers: spatel, dblaikie, jyknight, arsenm
Reviewed By: spatel
Subscribers: wdng, llvm-commits, hiraditya
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61562 — ctopper / detail - [LLParser] Simplify type checking in ParseArithmetic and ParseUnaryOp.
Summary:
These methods previously took a 0, 1, or 2 to indicate what types were allowed, but the 0 encoding which meant both fp and integer types has been unused for years. Its leftover from when add/sub/mul used to be shared between int and fp
Simplify it by changing it to just a bool to distinquish int and fp.
Reviewers: spatel, dblaikie, jyknight, arsenm
Reviewed By: spatel
Subscribers: wdng, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61561 — ctopper / detail - [Constants] Simplify type checking switch in ConstantExpr::get.
Summary:
Remove duplicate checks that both operands have the same type. This is checked
before the switch.
Use 'integer' or 'floating-point' instead of 'arithmetic' type. I think this
might be a leftover to the days when floating point and integer operations
shared the same opcodes.
Reviewers: spatel, RKSimon, dblaikie
Reviewed By: RKSimon
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61558 — ctopper / detail - [MCA] Notify event listeners when instructions transition to the Pending state. NFCI — adibiagio / detail
- Add FNeg IR constant folding support — mcinally / detail
- [X86] Make X86RegisterInfo(const Triple &TT) constructor explicit.
Fixes cppcheck warning. — rksimon / detail - [X86] Fix some cppcheck "Local variable name shadows outer variable" warnings. NFCI. — rksimon / detail
- [SLPVectorizer] Make getSpillCost() const. NFCI.
Ideally getTreeCost() should be const as well but non-const Type creation would need to be addressed first. — rksimon / detail - [SelectionDAG] Use any_of/all_of where possible. NFCI. — rksimon / detail
- Move Value *RHSCIOp def into the scope where its actually used. NFCI. — rksimon / detail
- Add InstCombine tests for FNeg instruction. — mcinally / detail
- [CodeGenPrepare] limit overflow intrinsic matching to a single basic block (2nd try)
This is a subset of the original commit from rL359879
which was reverted because it could crash when using the 'RemovedInstructions'
structure that enables delayed deletion of dead instructions. The motivating
compile-time win does not require that change though. We should get most of
that win from this change alone.
Using/updating a dominator tree to match math overflow patterns may be very
expensive in compile-time (because of the way CGP uses a DT), so just handle
the single-block case.
See post-commit thread for rL354298 for more details:
http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20190422/646276.html
Differential Revision: https://reviews.llvm.org/D61075 — spatel / detail - [llvm-nm] Convert weak.test to use yaml2obj and fix unntested 'v'
This restores part of the good change reverted by r359830. — maskray / detail - [AMDGPU] Fixed asan error after D61536 — rampitec / detail
clang-r359988-t56179-b56179.tar.gz (May 5, 2019 11:29:13 AM)
- Revert rL359962 : Use DiagRuntimeBehavior for -Wunsequenced to weed out false positives
where either the modification or the other access is unreachable.
........
Try to fix buildbots — rksimon / detail - [clang] fixing -ast-print for variadic parameter pack in lambda capture
Summary:
currently for:
```
template<typename ... T>
void f(T... t) {
auto l = [t...]{};
}
```
`clang -ast-print file.cpp`
outputs:
```
template <typename ...T> void f(T ...t) {
auto l = [t] {
}
;
}
```
notice that there is not `...` in the capture list of the lambda. this patch fixes this issue. and add test for it.
Patch by Tyker
Reviewers: rsmith
Reviewed By: rsmith
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D61556 — rakete1111 / detail - [C++] Interpret unknown identifier in parameter clause as unknown type
instead of as parameter name without a type. — rakete1111 / detail - [NFC] Add parentheses to avoid -Wparentheses. — rakete1111 / detail
- [c++20] Implement P0428R2 - Familiar template syntax for generic lambdas
Differential Revision: https://reviews.llvm.org/D36527 — hamzasood / detail - [c++20] Implement tweaked __VA_OPT__ rules from P1042R1:
* __VA_OPT__ is expanded if the *expanded* __VA_ARGS__ is non-empty,
not if the original argument contained no tokens.
* Placemarkers at the start and end of __VA_OPT__ are retained just
long enough to paste them with adjacent ## operators. We never paste
"across" a discarded placemarker. — rsmith / detail - Use DiagRuntimeBehavior for -Wunsequenced to weed out false positives
where either the modification or the other access is unreachable. — rsmith / detail
clang-r359961-t56162-b56162.tar.gz (May 3, 2019 11:18:25 PM)
- AMDGPU] gfx1010 hazard recognizer
Differential Revision: https://reviews.llvm.org/D61536 — rampitec / detail - [AMDGPU] gfx1010: use fmac instructions
Differential Revision: https://reviews.llvm.org/D61527 — rampitec / detail
clang-r359961-t56162-b56162.tar.gz (May 3, 2019 11:18:25 PM)
- Reduce amount of work ODR hashing does.
When a FunctionProtoType is in the original type in a DecayedType, the decayed
type is a PointerType which points back the original FunctionProtoType. The
visitor for ODRHashing will attempt to process both Type's, doing double work.
By chaining together multiple DecayedType's and FunctionProtoType's, this would
result in 2^N Type's visited only N DecayedType's and N FunctionProtoType's
exsit. Another bug where VisitDecayedType and VisitAdjustedType did
redundant work doubled the work at each level, giving 4^N Type's visited. This
patch removed the double work and detects when a FunctionProtoType decays to
itself to only check the Type once. This lowers the exponential runtime to
linear runtime. Fixes https://bugs.llvm.org/show_bug.cgi?id=41625 — rtrieu / detail - Disallow the operand of __builtin_constant_p from modifying enclosing
state when it's encountered while evaluating a constexpr function.
We attempt to follow GCC trunk's behavior here, but it is somewhat
inscrutible, so our behavior is only approximately the same for now.
Specifically, we only permit modification of objects whose lifetime
began within the operand of the __builtin_constant_p. GCC appears to
have effectively the same restriction, but also some unknown restriction
based on where and how the local state of the constexpr function is
mentioned within the operand (see added testcases). — rsmith / detail - [Driver] Create non-existent directory for -fcrash-diagnostics-dir
When user specifies non-existent directory to -fcrash-diagnostics-dir,
create it rather than failing with an error as would be the case before.
Differential Revision: https://reviews.llvm.org/D61542 — phosek / detail - [cxx_status] Don't list -fmodules / -fmodules-ts against C++ modules
support; those turn on different modules modes. The real C++ modules
support is behind -std=c++2a like the rest of C++20. — rsmith / detail - [cxx_status] Replace "SVN" entries with Clang 8 as appropriate.
Also: use the "svn" color for "explicit(bool)" rather than the "full" color. — rsmith / detail
clang-r359950-t56159-b56159.tar.gz (May 3, 2019 7:26:42 PM)
- [JITLink] Add two useful Section operations: find by name, get address range.
These operations were already used in eh-frame registration, and are likely to
be used in other runtime registrations, so this commit moves them into a header
where they can be re-used. — Lang Hames / detail
clang-r359950-t56159-b56159.tar.gz (May 3, 2019 7:26:42 PM)
- [clang] adding explicit(bool) from c++2a
this patch adds support for the explicit bool specifier.
Changes:
- The parsing for the explicit(bool) specifier was added in ParseDecl.cpp.
- The storage of the explicit specifier was changed. the explicit specifier was stored as a boolean value in the FunctionDeclBitfields and in the DeclSpec class. now it is stored as a PointerIntPair<Expr*, 2> with a flag and a potential expression in CXXConstructorDecl, CXXDeductionGuideDecl, CXXConversionDecl and in the DeclSpec class.
- Following the AST change, Serialization, ASTMatchers, ASTComparator and ASTPrinter were adapted.
- Template instantiation was adapted to instantiate the potential expressions of the explicit(bool) specifier When instantiating their associated declaration.
- The Add*Candidate functions were adapted, they now take a Boolean indicating if the context allowing explicit constructor or conversion function and this boolean is used to remove invalid overloads that required template instantiation to be detected.
- Test for Semantic and Serialization were added.
This patch is not yet complete. I still need to check that interaction with CTAD and deduction guides is correct. and add more tests for AST operations. But I wanted first feedback.
Perhaps this patch should be spited in smaller patches, but making each patch testable as a standalone may be tricky.
Patch by Tyker
Differential Revision: https://reviews.llvm.org/D60934 — rakete1111 / detail - CWG issue 727: Fix numerous bugs in support for class-scope explicit
specializations for variable templates. — rsmith / detail - [clang-format] Fix bug in block comment reflow that joins * and /
Fixes PR41213
Differential Revision: https://reviews.llvm.org/D61276 — owenpan / detail
clang-r359941-t56156-b56156.tar.gz (May 3, 2019 5:34:16 PM)
- [x86] add tests for fneg IR with undef; NFC — spatel / detail
- [AArch64][GlobalISel] Use fcsel instead of csel for G_SELECT on FPRs
This saves us some unnecessary copies.
If the inputs to a G_SELECT are floating point, we should use fcsel rather than
csel.
Changes here are...
- Teach selectCopy about s1-to-s1 copies across register banks.
- AArch64RegisterBankInfo about G_SELECT in general.
- Teach the instruction selector about the FCSEL instructions.
Also add two tests:
- select-select.mir to show that we get the expected FCSEL
- regbank-select.mir (unfortunately named) to show the register banks on
G_SELECT are properly preserved
And update fast-isel-select.ll to show that we do the same thing as other
instruction selectors in these cases. — paquette / detail
clang-r359939-t56155-b56155.tar.gz (May 3, 2019 4:37:56 PM)
- Make the git-llvm script work on older git versions that don't support git rev-parse --git-common-dir.
Not all versions of git support git rev-parse --git-common-dir. Rather than erorr or print any kind of
useful error, they just print back '--git-common-dir' instead of a directory. The git-llvm script
ends up taking this '--git-common-dir' as a diretory name to use.
Not sure exactly what happens after that, but the end result is that the 'git llvm push' ends up
looking like it pushed your commits, but really did nothing.
This patch makes the script detect the bogus directory name for --git-common-dir and falls back to using --git-dir instead. — ctopper / detail
clang-r359938-t56154-b56154.tar.gz (May 3, 2019 3:47:57 PM)
- [AMDGPU] gfx1010 wait count insertion
Differential Revision: https://reviews.llvm.org/D61534 — rampitec / detail - [AMDGPU] gfx1010 s_code_end generation
Also add some missing metadata in the streamer.
Differential Revision: https://reviews.llvm.org/D61531 — rampitec / detail - Update PatternMatcher for FNeg
Match both FNeg(X) and FSub(+-0.0, X) in FNeg_match
Differential Revision: https://reviews.llvm.org/D61520 — mcinally / detail - [AMDGPU] gfx1010 loop alignment
Differential Revision: https://reviews.llvm.org/D61529 — rampitec / detail - [COFF, ARM64] Fix ABI implementation of struct returns
Summary:
Refer the ABI doc at: https://docs.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions?view=vs-2019#return-values
Related clang patch: D60349
Reviewers: rnk, efriedma, TomTan, ssijaric
Reviewed By: rnk, efriedma
Subscribers: mstorsjo, javed.absar, kristof.beyls, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60348 — mgrang / detail
clang-r359938-t56154-b56154.tar.gz (May 3, 2019 3:47:57 PM)
- [COFF, ARM64] Fix ABI implementation of struct returns
Summary:
Related llvm patch: D60348.
Patch co-authored by Sanjin Sijaric.
Reviewers: rnk, efriedma, TomTan, ssijaric, ostannard
Reviewed By: efriedma
Subscribers: dmajor, richard.townsend.arm, ostannard, javed.absar, kristof.beyls, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D60349 — mgrang / detail
clang-r359938-t56154-b56154.tar.gz (May 3, 2019 3:47:57 PM)
- [Lsan] Disabling explicitally FreeBSD
As it is not implemented upon usage, it just provokes numerous linkage issues so better switch off clearly.
Reviewers: vitalybuka, morehouse
Reviewed By: morehouse
Differential Revision: https://reviews.llvm.org/D61484 — David CARLIER / detail
clang-r359919-t56151-b56151.tar.gz (May 3, 2019 1:45:06 PM)
clang-r359919-t56150-b56150.tar.gz (May 3, 2019 1:01:33 PM)
- Reapply r359906, "RegAllocFast: Add heuristic to detect values not live-out of a block"
This reverts commit r359912.
This should pass now, since the clang test was made less fragile in
r359918. — arsenm / detail - [CommandLine] Enable Grouping for short options by default. Part 4 of 5
Summary:
This change enables `cl::Grouping` for short options --
options with names of a single character. This is consistent with GNU
getopt behavior.
Reviewers: rnk, MaskRay
Reviewed By: MaskRay
Subscribers: thopre, cfe-commits, MaskRay, rupprecht, hiraditya, llvm-commits
Tags: #llvm, #clang
Differential Revision: https://reviews.llvm.org/D61270 — dhinton / detail - [DAGCombine] Remove repeated variables. NFCI. — rksimon / detail
- Revert r359906, "RegAllocFast: Add heuristic to detect values not live-out of a block"
Makes clang/test/Misc/backend-stack-frame-diagnostics-fallback.cpp fail. — nico / detail - [TargetLowering] SimplifySetCC - remove repeated variable. NFCI.
Also reduce scope of Temp variable. — rksimon / detail - [CommandLine] Change help output to prefix long options with `--` instead of `-`. NFC . Part 3 of 5
Summary:
By default, `parseCommandLineOptions()` will accept either a
`-` or `--` prefix for long options -- options with names longer than
a single character.
While this change does not affect behavior, it will be helpful with a
subsequent change that requires long options use the `--` prefix.
Reviewers: rnk, thopre
Reviewed By: thopre
Subscribers: thopre, cfe-commits, hiraditya, llvm-commits
Tags: #llvm, #clang
Differential Revision: https://reviews.llvm.org/D61269 — dhinton / detail
clang-r359919-t56150-b56150.tar.gz (May 3, 2019 1:01:33 PM)
- Ensure there is stack usage in stack size warning test
r359906 broke this because the only stack usage was from a spill which
can be avoided since the only block is a return. — arsenm / detail - Attempt to fix the clang-sphinx-docs bot after r358797 — nico / detail
- Remove else-after-return — dblaikie / detail
- [CUDA][Clang][Bugfix] Add missing CUDA 9.2 case
Summary:
The bug was reported on the OpenMP-dev list:
.../obj-release/lib/clang/9.0.0/include/__clang_cuda_intrinsics.h:173:35: error: '__nvvm_shfl_sync_idx_i32' needs target feature ptx60|ptx61|ptx63|ptx64
__MAKE_SYNC_SHUFFLES(__shfl_sync, __nvvm_shfl_sync_idx_i32,
This problem occurs when trying to compile a .cu file that requires a newer ptx version (>ptx60 in this case) than ptx42.
Reviewers: tra, ABataev, caomhin
Reviewed By: tra
Subscribers: jdoerfert, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D61474 — gbercea / detail - [CommandLine] Change help output to prefix long options with `--` instead of `-`. NFC . Part 3 of 5
Summary:
By default, `parseCommandLineOptions()` will accept either a
`-` or `--` prefix for long options -- options with names longer than
a single character.
While this change does not affect behavior, it will be helpful with a
subsequent change that requires long options use the `--` prefix.
Reviewers: rnk, thopre
Reviewed By: thopre
Subscribers: thopre, cfe-commits, hiraditya, llvm-commits
Tags: #llvm, #clang
Differential Revision: https://reviews.llvm.org/D61269 — dhinton / detail
clang-r359919-t56150-b56150.tar.gz (May 3, 2019 1:01:33 PM)
- [hwasan] Fix HWASAN_WITH_INTERCEPTORS=OFF build on not-android.
Summary:
I'm not aware of any platforms where this will work, but the code should at least compile.
HWASAN_WITH_INTERCEPTORS=OFF means there is magic in libc that would call __hwasan_thread_enter /
__hwasan_thread_exit as appropriate.
Reviewers: pcc, winksaville
Subscribers: srhines, kubamracek, #sanitizers, llvm-commits
Tags: #sanitizers, #llvm
Differential Revision: https://reviews.llvm.org/D61337 — eugenis / detail
clang-r359908-t56147-b56147.tar.gz (May 3, 2019 11:39:27 AM)
- Revert "[CodeGenPrepare] limit overflow intrinsic matching to a single basic block"
This reverts commit r359879, which introduced a compiler crash. — eugenis / detail - RegAllocFast: Add heuristic to detect values not live-out of a block
Add an improved/new heuristic to catch more cases when values are not
live out of a basic block.
Patch by Matthias Braun — arsenm / detail
clang-r359908-t56147-b56147.tar.gz (May 3, 2019 11:39:27 AM)
- Mark is_trivially_destructible as unsupported with apple-clang-9
See discussion on https://reviews.llvm.org/D48292 — nico / detail
clang-r359905-t56146-b56146.tar.gz (May 3, 2019 10:43:09 AM)
- [hexagon] change AsmParser assertion to error
For immediates that can't be evaluated in assembler-mapped instructions, we
should return 'invalid operand' instead of assert. — bcain / detail - [Docs][CodeGenerator][eBPF] Correct the values for BPF_X and BPF_K
Fix the values of BPF_X and BPF_K according to BPFInstrFormats.td:
"
def BPF_K : BPFSrcType<0x0>;
def BPF_X : BPFSrcType<0x1>;
"
The right value for BPF_X is 0x1, and the right value for BPF_K is 0x0.
Signed-off-by: Wang YanQing <udknight@gmail.com>
Differential Revision: https://reviews.llvm.org/D61512 — yhs / detail - [X86] Allow assembly parser to accept x/y/z suffixes on non-memory vfpclassps/pd and on memory forms in intel syntax
The x/y/z suffix is needed to disambiguate the memory form in at&t syntax since no xmm/ymm/zmm register is mentioned.
But we should also allow it for the register and broadcast forms where its not needed for consistency. This matches gas.
The printing code will still only use the suffix for the memory form where it is needed. — ctopper / detail - [llvm] Revert r231274: "Devirtualize ~parser<T> by making it protected in base classes and making derived classes final"
Summary: This patch was previously applied in r231221, and reverted in
r231254 because it broke self-hosting. It was subsequently fixed and
reapplied in r231274. Unfortunately, making the `parser<T>` classes
final prevents inheritance which makes it impossible to implement
custom parsers.
Reverting r231221 restores the ability to customize parsers.
Reviewers: dblaikie
Reviewed By: dblaikie
Subscribers: craig.topper, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60955 — dhinton / detail - [X86] LowerToHorizontalOp - Tidyup calls to getHopForBuildVector. NFCI.
Merge the if() tests for the various HADD/SUB + Subtarget tests — rksimon / detail - [SelectionDAG] CreateTopologicalOrder - don't use iterator
We shouldn't use an iterator to loop across a std::vector when the same loop is adding elements to that std::vector
Found by cppcheck — rksimon / detail - AMDGPU: Select VOP3 form of sub
The VOP3 form should always be the preferred selection form to be
shrunk later.
The r600 sub test needs to be split out because it asserts on the
arguments in the new test during the calling convention lowering. — arsenm / detail - AMDGPU: Support shrinking add with FI in SIFoldOperands
Avoids test regression in a future patch — arsenm / detail - Revert r359549 - incorrect update of test checks. NFC — rlougher / detail
- [x86] add tests for fneg with undefs; NFC
This was originally part of D61419. — spatel / detail - AMDGPU: Remove redundant patterns for shifts — arsenm / detail
- AMDGPU: Remove redundant patterns for sub
There were 2 patterns for sub, one selecting to sub and one to
subrev. Only one of these will succeed, so remove the reversed one. — arsenm / detail
clang-r359893-t56144-b56144.tar.gz (May 3, 2019 9:46:54 AM)
- AMDGPU: Add baseline test for future patch — arsenm / detail
- AMDGPU: Replace shrunk instruction with dummy implicit_def
This was broken if the original operand was killed. The kill flag
would appear on both instructions, and fail the verifier. Keep the
kill flag, but remove the operands from the old instruction. This has
an added benefit of really reducing the use count for future folds.
Ideally the pass would be structured more like what PeepholeOptimizer
does to avoid this hack to avoid breaking instruction iterators. — arsenm / detail - [TargetLowering] ShrinkDemandedConstant - reduce scope of TLO.DAG variable. NFCI.
Only ever used in one block — rksimon / detail - [X86] Remove repeated variables. NFCI. — rksimon / detail
- gn build: Merge r359878 — nico / detail
- Let --discard-all imply --strip-debug.
This will match gnu strip's behavior.
Differential Revision: https://reviews.llvm.org/D61092 — sidneym / detail - [X86] Add X64 common prefixes and regenerate mul i64 tests
Noticed while reviewing D61472 — rksimon / detail - AMDGPU: Forgot to commit test file for r358890 — arsenm / detail
- Avoid cppcheck operator precedence warnings. NFCI.
Prefer ((X & Y) ? A : B) to (X & Y ? A : B) — rksimon / detail - AMDGPU: Fix incorrect commute with sub when folding immediates
When a fold of an immediate into a sub/subrev required shrinking the
instruction, the wrong VOP2 opcode was used. This was using the VOP2
equivalent of the original instruction, not the commuted instruction
with the inverted opcode. — arsenm / detail - AMDGPU: Fix test verification
This should run the verifier, and needs to enable trackRegLiveness. — arsenm / detail
clang-r359881-t56143-b56143.tar.gz (May 3, 2019 8:50:06 AM)
- [LICM] auto-generate complete test checks; NFC — spatel / detail
- [CodeGenPrepare] limit overflow intrinsic matching to a single basic block
Using/updating a dominator tree to match math overflow patterns may be very
expensive in compile-time (because of the way CGP uses a DT), so just handle
the single-block case.
Also, we were restarting the iterator loops when doing the overflow intrinsic
transforms by marking the dominator tree for update. That was done to prevent
iterating over a removed instruction. But we can postpone the deletion using
the existing "RemovedInsts" structure, and that means we don't need to update
the DT.
See post-commit thread for rL354298 for more details:
http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20190422/646276.html
Differential Revision: https://reviews.llvm.org/D61075 — spatel / detail - [Object][XCOFF] Add an XCOFF dumper for llvm-readobj.
Patch adds support for dumping of file headers with llvm-readobj. XCOFF
object files are added to test dumping a well formed file, and dumping
both negative timestamps and negative symbol counts, both of which are
allowed in the XCOFF definition.
Differential Revision: https://reviews.llvm.org/D60878 — sfertile / detail - [TargetLowering] expandUnalignedStore - cleanup EVT variables. NFCI.
Avoid duplicated EVTs and rename Store/Load VTs to avoid -Wshadow warnings. — rksimon / detail
clang-r359881-t56143-b56143.tar.gz (May 3, 2019 8:50:06 AM)
- Added an AST matcher for declarations that are in the `std` namespace
Reviewers: alexfh
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D61480 — gribozavr / detail
clang-r359881-t56143-b56143.tar.gz (May 3, 2019 8:50:06 AM)
- [clangd] Fix header-guard check for include insertion, and don't index header guards.
Summary:
Both of these attempt to check whether a header guard exists while parsing the
file. However the file is only marked as guarded once clang finishes processing
it. We defer the checks and work until SymbolCollector::finish().
This is ugly and ad-hoc, deferring *all* work might be cleaner.
Reviewers: kadircet
Subscribers: ilya-biryukov, MaskRay, jkorous, mgrang, arphaman, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D61442 — sammccall / detail - Added an AST matcher for declarations that are in the `std` namespace
Reviewers: alexfh
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D61480 — gribozavr / detail
clang-r359875-t56141-b56141.tar.gz (May 3, 2019 7:16:11 AM)
- Revert "[MIR] Add simple PRE pass to MachineCSE"
This reverts commit 9c20156de39b377190d7a91783d61877b303fe35.
It breaks stage 2 of clang-ppc64be-linux-multistage. — anton-afanasyev / detail
clang-r359875-t56141-b56141.tar.gz (May 3, 2019 7:16:11 AM)
- [clangd] Also perform merging for symbol definitions
Summary:
clangd currently prefers declarations from codegen files. This patch
implements that behavior for definition locations. If we have definiton
locations both coming from AST and index, clangd will perform a merging to show
the codegen file if that's the case.
Reviewers: sammccall
Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D61126 — kadircet / detail
clang-r359873-t56139-b56139.tar.gz (May 3, 2019 5:17:40 AM)
- [SelectionDAG] Use INT_MIN as (1 << 31) is UB for signed integers. NFCI. — rksimon / detail
- [SelectionDAG] computeKnownBits - remove some duplicate/shadow variables. NFCI. — rksimon / detail
clang-r359871-t56138-b56138.tar.gz (May 3, 2019 4:32:49 AM)
- [X86] LowerMULH - remove unused Lo/Hi vector indices. NFCI.
Leftover from before we had the extract128BitVector helpers. — rksimon / detail - [MIR] Add simple PRE pass to MachineCSE
This is the second part of the commit fixing PR38917 (hoisting
partitially redundant machine instruction). Most of PRE (partitial
redundancy elimination) and CSE work is done on LLVM IR, but some of
redundancy arises during DAG legalization. Machine CSE is not enough
to deal with it. This simple PRE implementation works a little bit
intricately: it passes before CSE, looking for partitial redundancy
and transforming it to fully redundancy, anticipating that the next
CSE step will eliminate this created redundancy. If CSE doesn't
eliminate this, than created instruction will remain dead and eliminated
later by Remove Dead Machine Instructions pass.
The third part of the commit is supposed to refactor MachineCSE,
to make it more clear and to merge MachinePRE with MachineCSE,
so one need no rely on further Remove Dead pass to clear instrs
not eliminated by CSE.
First step: https://reviews.llvm.org/D54839
Fixes llvm.org/PR38917
Reviewers: RKSimon
Subscribers: hfinkel, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D56772 — anton-afanasyev / detail - Reduce variable scope to just the if() block its actually used in. NFCI. — rksimon / detail
clang-r359871-t56138-b56138.tar.gz (May 3, 2019 4:32:49 AM)
- [Sema][ObjC] Disable -Wunused-parameter for ObjC methods
The warning isn't very useful when the function is an ObjC method.
rdar://problem/41561853
Differential Revision: https://reviews.llvm.org/D61147 — ahatanak / detail
clang-r359871-t56138-b56138.tar.gz (May 3, 2019 4:32:49 AM)
- [clangd] Minor code style cleanups in Protocol.h. NFC
- Remove a parameter name that was misspelled (OS used for non-stream
parameter)
- Declare operator == (TextEdit, TextEdit) outside the struct, for
consistency with other user-declared ops in our code.
- Fix naming style of a parameter. — ibiryukov / detail
clang-r359871-t56138-b56138.tar.gz (May 3, 2019 4:32:49 AM)
- Avoid duplicate function aliases on MinGW after SVN r359835
On MinGW, the same alias mechanism as for ELF, using
__attribute__((__alias__())), is used. — mstorsjo / detail
clang-r359863-t56134-b56134.tar.gz (May 3, 2019 1:32:53 AM)
- [X86] Add more one checks to masked compare patterns that were missed in r358358.
This covers the patterns we use for widening 128/256 comparisons to 512-bit when
AVX512VL isn't supported. — ctopper / detail
clang-r359860-t56132-b56132.tar.gz (May 2, 2019 11:27:35 PM)
- [docs] Add support for Markdown documentation when creating man pages
rL358749 added a documentation page in the Markdown format. Currently,
such pages are ignored in the configuration script for manual pages.
This patch fixes that.
Differential Revision: https://reviews.llvm.org/D60964 — ikudrin / detail
clang-r359860-t56132-b56132.tar.gz (May 2, 2019 11:27:35 PM)
- Revert "[Attribute/Diagnostics] Print macro if definition is an attribute declaration"
This reverts commit fc40cbd9d8c63e65eed3590ba925321afe782e1d. — leonardchan / detail - Revert r359814 "[Sema] Emit warning for visibility attribute on internal-linkage declaration"
See cfe-commits thread for r359814. — nico / detail
clang-r359856-t56131-b56131.tar.gz (May 2, 2019 9:53:09 PM)
- Add check-builtins to sanitizer-windows
This bot runs check-profile and check-fuzzer, so this is really more of
a 'compiler-rt-windows' bot these days, I guess.
This would've found https://crbug.com/958973 immediately. — rnk / detail
clang-r359856-t56131-b56131.tar.gz (May 2, 2019 9:53:09 PM)
- [IRTranslator] Use the alloc size instead of the store size when translating allocas
We use to incorrectly use the store size instead of the alloc size when
creating the stack slot for allocas.
On aarch64 this can be demonstrated by allocating weirdly sized types.
For instance, in the added test case, we use an alloca for i19. We used
to allocate a slot of size 24-bit (19 rounded up to the next byte),
whereas we really want to use a full 32-bit slot for this type. — qcolombet / detail - [AArch64][MC] Reject "add x0, x1, w2, lsl #1" etc.
Looks like just a minor oversight in the parsing code.
Fixes https://bugs.llvm.org/show_bug.cgi?id=41504.
Differential Revision: https://reviews.llvm.org/D60840 — efriedma / detail - Tidy up a comment, fix a typo, remove a comment that's obsolete. — echristo / detail
- [AArch64][Windows] Compute function length correctly in unwind tables.
The primary fix here is to WinException.cpp: we need to exclude jump
tables when computing the length of a function, or else we fail to
correctly compute the length. (We can only compute the number of bytes
consumed by certain assembler directives after the entire file is
parsed. ".p2align" is one of those directives, and is used by jump table
generation.)
The secondary fix, to MCWin64EH, is to make sure we don't silently
miscompile if we hit a similar situation in the future.
It's possible we could extend ARM64EmitUnwindInfo so it allows function
bodies that contain assembler directives, but that's a lot more
complicated; see the FIXME in MCWin64EH.cpp.
Fixes https://bugs.llvm.org/show_bug.cgi?id=41581 .
Differential Revision: https://reviews.llvm.org/D61095 — efriedma / detail - [MemorySSA] Check that block is reachable when adding phis.
Summary:
Originally the insertDef method was only used when building MemorySSA, and was limiting the number of Phi nodes that it created.
Now it's used for updates as well, and it can create additional Phis needed for correctness.
Make sure no Phis are created in unreachable blocks (condition met during MSSA build), otherwise the renamePass will find a null DTNode.
Resolves PR41640.
Reviewers: george.burgess.iv
Subscribers: jlebar, Prazek, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61410 — asbirlea / detail - [MemorySSA] Refactor removing multiple trivial phis [NFC].
Summary: Create a method to clean up multiple potentially trivial phis, since we will need this often.
Reviewers: george.burgess.iv
Subscribers: jlebar, Prazek, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61471 — asbirlea / detail - [X86] Remove LEA16r references from X86FixupLEAs. NFCI
As far as I know, we never emit LEA16r — ctopper / detail - [X86] Correct the register class for specific mask register constraints in getRegForInlineAsmConstraint when the VT is a scalar type
The default impementation in the base class for TargetLowering::getRegForInlineAsmConstraint doesn't work for mask registers when the VT is a scalar type integer types since the only legal mask types are vXi1. So we end up just getting whatever the first register class that contains the register. Currently this appears to be VK1, but its really dependent on the order tablegen outputs the register classes.
Some code in the caller ends up looking up the type for this register class and find v1i1 then generates a copyfromreg from the physical k-register with the v1i1 type. Then it generates an any_extend from v1i1 to the scalar VT which isn't legal. This bad any_extend sticks around until isel where it selects a MOVZX32rr8 with a v1i1 input or maybe a i8 input. Not sure but eventually we pick up a copy from VK1 to GR8 in MachineIR which isn't supported. This leads to a failure in physical register copying.
This patch uses the scalar type to find a VK class of the right size. In the attached test case this will be VK16. This causes a bitcast from vk16 to i16 to be generated instead of an any_extend. This will be properly iseled to a VK16 to GR32 copy and a GR32->GR16 extract_subreg.
Fixes PR41678
Differential Revision: https://reviews.llvm.org/D61453 — ctopper / detail - [SelectionDAG] Add asserts to verify the vectorness of input and output types of TRUNCATE/ZERO_EXTEND/ANY_EXTEND/SIGN_EXTEND agree
As a result of the underlying cause of PR41678 we created an ANY_EXTEND node with a scalar result type and v1i1 input type. Ideally we would have asserted for this instead of letting it go through to instruction selection and generate bad machine IR
Differential Revision: https://reviews.llvm.org/D61463 — ctopper / detail - [AArch64] Update for Exynos
Fix the forwarding of multiplication results for Exynos M4. — evandro / detail - [X86] Remove string literal from an if. NFC
This if used to be an assert that got refactored into an if, but left the string literal behind.
Fixes PR41718 — ctopper / detail - Revert [ThinLTO] Fix X86/strong_non_prevailing.ll after llvm-nm 'r' change
This reverts r359314 (git commit 5015aa854dc043b2ae5d95e04e00d98518207ce5) — rupprecht / detail - Revert [llvm-nm] Fix handling of symbol types + [llvm-nm] Generalize symbol types
This reverts r359311 and r359312 (git commit 0bf06a8f59b0074a60871865e828d92db8930c59 and 5f184f17800ea2ac27be5e4ab540cb94a46e80c7) — rupprecht / detail - lld-link: Add /force:multipleres extension to make dupe resource diag non-fatal
As a side benefit, lld-link now reports more than one duplicate resource
entry before exiting with an error even if the new flag is not passed. — nico / detail - [gn] Include the missing BUILD.gn file for libcxxabi includes
This was omitted in r359805.
Differential Revision: https://reviews.llvm.org/D61462 — phosek / detail
clang-r359856-t56131-b56131.tar.gz (May 2, 2019 9:53:09 PM)
- SemaOverload: Complete candidates before emitting the error, to ensure diagnostics emitted (or suppressed) during completion don't interfere with the overload notes
Because diagnostics and their notes are not connected at the API level,
if the error message for an overload is emitted, then the overload
candidates are completed - if a diagnostic is emitted during that work,
the notes related to overload candidates would be attached to the latter
diagnostic, not the original error. Sort of worse, if the latter
diagnostic was disabled, the notes are disabled.
Reviewers: rsmith
Differential Revision: https://reviews.llvm.org/D61357 — dblaikie / detail - Fix -Wunsequenced false-positives in code controlled by a branch on
__builtin_constant_p.
If the operand of __builtin_constant_p is not constant and has
side-effects, then code controlled by a branch on it is unreachable and
we should not emit runtime behavior warnings in such code. — rsmith / detail - [CUDA] Do not pass deprecated option fo fatbinary
CUDA 10.1 tools deprecated some command line options.
fatbinary no longer needs --cuda.
Differential Revision: https://reviews.llvm.org/D61470 — tra / detail - [Attribute/Diagnostics] Print macro if definition is an attribute declaration
If an address_space attribute is defined in a macro, print the macro instead
when diagnosing a warning or error for incompatible pointers with different
address_spaces.
We allow this for all attributes (not just address_space), and for multiple
attributes declared in the same macro.
Differential Revision: https://reviews.llvm.org/D51329 — leonardchan / detail
clang-r359856-t56131-b56131.tar.gz (May 2, 2019 9:53:09 PM)
- [crtbegin] Fix an off-by-1 bug in __do_fini
Differential Revision: https://reviews.llvm.org/D61367 — maskray / detail - Fix check-builtins on Windows after alias changes — rnk / detail
clang-r359856-t56131-b56131.tar.gz (May 2, 2019 9:53:09 PM)
- [libc++][test] Remove non-portable assumption that thread's constructor allocates with ::new
Drive-by:
* Fix potential race between check and update of `throw_one` in `operator new`
* Fix latent bug in `operator delete`, which shouldn't decrement `outstanding_new` when passed a null pointer
* Specifically catch the expected `bad_alloc` in `main` instead of `...`
Differential Revision: https://reviews.llvm.org/D50860 — caseycarter / detail
clang-r359825-t56122-b56122.tar.gz (May 2, 2019 3:02:41 PM)
- [gn] Update the clangd test lit site configuration
This reflects changes made in r359763. — phosek / detail
clang-r359825-t56122-b56122.tar.gz (May 2, 2019 3:02:41 PM)
clang-r359825-t56122-b56122.tar.gz (May 2, 2019 3:02:41 PM)
- [clangd][xpc] Cannonicalize value of CLANGD_BUILD_XPC before caching — Jan Korous / detail
clang-r359821-t56121-b56121.tar.gz (May 2, 2019 2:13:15 PM)
- Typo Functino->Function. — echristo / detail
- build: add option to disable unwind tables
The unwind tables (`.eh_frame`, `.arm.extab`) add a significant chunk of data to
the final binaries. These should not be needed normally, particularly when
exceptions are disabled. This enables shrinking `lldb-server` by ~18% (3 MiB)
when built with gold. — Saleem Abdulrasool / detail
clang-r359821-t56121-b56121.tar.gz (May 2, 2019 2:13:15 PM)
- Another attempt to fix "could not find clang-check" lit warning in analyzer-less builds
r359717 added clang-check as a dep of check-clang unconditionally
because I had missed lit.local.cfg in test/Tooling.
Instead, only add clang-check to the tools if the analyzer is enabled,
since the build target only exists then, and since all tests using
clang-check are skipped when the analyzer is disabled.
Differential Revision: https://reviews.llvm.org/D61418 — nico / detail
clang-r359818-t56120-b56120.tar.gz (May 2, 2019 1:22:49 PM)
- [yaml2obj] - Make interface of `NameToIdxMap` class be human friendly and fix users.
This patch inverses the values returned by `addName` and
`lookup` methods of the class mentioned so that they
now return true on success and false on failure.
Also, it does minor code cleanup.
Differential revision: https://reviews.llvm.org/D61190 — grimar / detail - [gn] Include libcxx configuration file
This was omitted in r359806 but is already referenced in the GN build. — phosek / detail
clang-r359818-t56120-b56120.tar.gz (May 2, 2019 1:22:49 PM)
- [Sema] Emit warning for visibility attribute on internal-linkage declaration
GCC warns on these cases, but we currently just silently ignore the attribute.
Differential Revision: https://reviews.llvm.org/D61097 — scott.linder / detail - Use primary template parameter names for variable template debug info
Summary:
Fixes PR41677
Consider:
template <typename LHS, typename RHS> constexpr bool is_same_v = false;
template <typename T> constexpr bool is_same_v<T, T> = true;
template constexpr bool is_same_v<int, int>;
Before this change, when emitting debug info for the
`is_same_v<int, int>` global variable, clang would crash because it
would try to use the template parameter list from the partial
specialization to give parameter names to template arguments. This
doesn't work in general, since a partial specialization can have fewer
arguments than the primary template. Therefore, always use the primary
template. Hypothetically we could try to use the parameter names from
the partial specialization when possible, but it's not clear this really
helps debugging in practice.
Reviewers: JDevlieghere, aprantl, ormris, dblaikie
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D61408 — rnk / detail
clang-r359818-t56120-b56120.tar.gz (May 2, 2019 1:22:49 PM)
- [libc++][CMake] Link against libSystem on Apple platforms
Instead of manually linking against libm/librt/libpthread, we should be
linking against libSystem on Apple platforms, and only that. libm and
libpthread are symlinks to libSystem anyway. — Louis Dionne / detail
clang-r359806-t56118-b56118.tar.gz (May 2, 2019 12:01:21 PM)
- [gn] Support for building libc++
This change introduces support for building libc++. The library
build should be complete, but not all CMake options have been
replicated in GN. We also don't support tests yet.
We only support two stage build at the moment.
Differential Revision: https://reviews.llvm.org/D61143 — phosek / detail - [gn] Support for building libcxxabi
This change introduces support for building libcxxabi. The library
build should be complete, but not all CMake options have been
replicated in GN. We also don't support tests yet.
We only support two stage build at the moment.
Differential Revision: https://reviews.llvm.org/D60372 — phosek / detail - [gn] Support for building libunwind
This change introduces support for building libuwind. The library
build should be complete, but not all CMake options have been
replicated in GN. We also don't support tests yet.
We only support two stage build at the moment.
Differential Revision: https://reviews.llvm.org/D60370 — phosek / detail
clang-r359806-t56118-b56118.tar.gz (May 2, 2019 12:01:21 PM)
- Do not warn on switches over enums that do not use [[maybe_unused]] enumerators
PR36231, [dcl.attr.unused]p3
Reviewers: aaron.ballman
Differential Revision: https://reviews.llvm.org/D61444 — dblaikie / detail - [OpenCL] Fix initialisation of this via pointer.
When the expression used to initialise 'this' has a pointer type,
check the address space of the pointee type instead of the pointer
type to decide whether an address space cast is required.
It is the pointee type that carries the address space qualifier.
Fixing PR41674.
Patch by kpet (Kevin Petit)!
Differential Revision: https://reviews.llvm.org/D61319 — stulova / detail
clang-r359806-t56118-b56118.tar.gz (May 2, 2019 12:01:21 PM)
- Fixed: Duck-typing in readability-redundant-smartptr-get didn't catch MSVC STL smart pointers.
Differential Revision: https://reviews.llvm.org/D61209 — fgross / detail - Reapply r359778: [clangd] Fix code completion of macros defined in the preamble region of the main file.
The bad assert has been removed, and updateOutOfDateIdentifier has been guarded.
This reverts commit r359796. — sammccall / detail - Revert rL359778 : [clangd] Fix code completion of macros defined in the preamble region of the main file.
Summary:
This is a tricky case (we baked the assumption that symbols come from
the preamble xor mainfile pretty deeply) and the fix is a bit of a hack:
We look at the code to guess the macro names, and deserialize them from
the preamble "by hand".
Reviewers: ilya-biryukov
Subscribers: ioeric, MaskRay, jkorous, arphaman, kadircet, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D60937
........
Fix buildbots http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast/builds/47684/ — rksimon / detail
clang-r359806-t56118-b56118.tar.gz (May 2, 2019 12:01:21 PM)
- [compiler-rt] Set the ZX_VMO_RESIZABLE option for zx_vmo_create
Currently VMO in Zircon create using the zx_vmo_create is resizable
by default, but we'll be changing this in the future, requiring an
explicit flag to make the VMO resizable.
Prepare for this change by passing ZX_VMO_RESIZABLE option to all
zx_vmo_create calls that need resizable VMO.
Differential Revision: https://reviews.llvm.org/D61450 — phosek / detail - [libFuzzer] Re-enable libFuzzer on i386 Linux and fix test
Summary:
Re-enable libFuzzer on i386 Linux after it was accidentally
disabled.
Also disable gc-sections.test on i386 since lld isn't
garbage collecting properly with ASAN on i386.
Reviewers: morehouse
Reviewed By: morehouse
Subscribers: srhines, mgorny, #sanitizers, llvm-commits
Tags: #sanitizers, #llvm
Differential Revision: https://reviews.llvm.org/D61415 — metzman / detail
clang-r359806-t56118-b56118.tar.gz (May 2, 2019 12:01:21 PM)
- [gn] Support for building libc++
This change introduces support for building libc++. The library
build should be complete, but not all CMake options have been
replicated in GN. We also don't support tests yet.
We only support two stage build at the moment.
Differential Revision: https://reviews.llvm.org/D61143 — phosek / detail
clang-r359793-t56116-b56116.tar.gz (May 2, 2019 10:16:02 AM)
- [DAGCombiner] try repeated fdiv divisor transform before building estimate (2nd try)
The original patch was committed at rL359398 and reverted at rL359695 because of
infinite looping.
This includes a fix to check for a vector splat of "1.0" to avoid the infinite loop.
Original commit message:
This was originally part of D61028, but it's an independent diff.
If we try the repeated divisor reciprocal transform before producing an estimate sequence,
then we have an opportunity to use scalar fdiv. On x86, the trade-off is 1 divss vs. 5
vector FP ops in the default estimate sequence. On recent chips (Skylake, Ryzen), the
full-precision division is only 3 cycle throughput, so that's probably the better perf
default option and avoids problems from x86's inaccurate estimates.
The last 2 tests show that users still have the option to override the defaults by using
the function attributes for reciprocal estimates, but those patterns are potentially made
faster by converting the vector ops (including ymm ops) to scalar math.
Differential Revision: https://reviews.llvm.org/D61149 — spatel / detail - [SelectionDAG] remove constant folding limitations based on FP exceptions
We don't have FP exception limits in the IR constant folder for the binops (apart from strict ops),
so it does not make sense to have them here in the DAG either. Nothing else in the backend tries
to preserve exceptions (again outside of strict ops), so I don't see how this could have ever
worked for real code that cares about FP exceptions.
There are still cases (examples: unary opcodes in SDAG, FMA in IR) where we are trying (at least
partially) to preserve exceptions without even asking if the target supports FP exceptions. Those
should be corrected in subsequent patches.
Real support for FP exceptions requires several changes to handle the constrained/strict FP ops.
Differential Revision: https://reviews.llvm.org/D61331 — spatel / detail - [X86][SSE] lowerAddSubToHorizontalOp - enable ymm extraction+fold
Limiting scalar hadd/hsub generation to the lowest xmm looks to be unnecessary - we will be extracting one upper xmm whatever, and we can remove a shuffle by using the hop which is inline with what shouldUseHorizontalOp expects to happen anyway.
Testing on btver2 (the main target for fast-hops) shows this is beneficial even for float ops where we have a 'shuffle' to extract the float result:
https://godbolt.org/z/0R-U-K
Differential Revision: https://reviews.llvm.org/D61426 — rksimon / detail - [X86][SSE] Move shouldUseHorizontalOp inside isHorizontalBinOp. NFCI.
Matches what we do for lowerAddSubToHorizontalOp and will make it easier to peek through subvectors to help fix PR39921 — rksimon / detail - [llvm-strip]Add --no-strip-all to disable --strip-all behaviour (including default stripping)
If certain switches are not specified, llvm-strip behaves as if
--strip-all were specified. This means that for testing, when we don't
want the stripping behaviour, we have to specify one of these switches,
which can be confusing. This change adds --no-strip-all to allow an
alternative way of suppressing the default stripping, in a less
confusing manner.
Reviewed by: jakehehrlich, MaskRay
Differential Revision: https://reviews.llvm.org/D61377 — jhenderson / detail
clang-r359793-t56116-b56116.tar.gz (May 2, 2019 10:16:02 AM)
- [OpenCL] Deduce static data members to __global addr space.
Similarly to static variables in OpenCL, static class data
members should be deduced to __global addr space.
Differential Revision: https://reviews.llvm.org/D61304 — stulova / detail
clang-r359793-t56116-b56116.tar.gz (May 2, 2019 10:16:02 AM)
- [clangd] Fix code completion of macros defined in the preamble region of the main file.
Summary:
This is a tricky case (we baked the assumption that symbols come from
the preamble xor mainfile pretty deeply) and the fix is a bit of a hack:
We look at the code to guess the macro names, and deserialize them from
the preamble "by hand".
Reviewers: ilya-biryukov
Subscribers: ioeric, MaskRay, jkorous, arphaman, kadircet, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D60937 — sammccall / detail
clang-r359776-t56109-b56109.tar.gz (May 2, 2019 5:10:55 AM)
- [LTO] Migrate typedef to using
using has been used in several places in the file. Migrate the rest for consistency. — maskray / detail - [llvm-readobj] Delete and inline relocAddressLess
It is used only once in COFFDumper.cpp. Deleting it from the public
interface seems better. — maskray / detail - [Object] Change getSectionName() to return Expected<StringRef>
Summary:
It currently receives an output parameter and returns
std::error_code. Expected<StringRef> fits for this purpose perfectly.
Differential Revision: https://reviews.llvm.org/D61421 — maskray / detail - [ARM GlobalISel] Fixup r359768
Get rid of local variable used only in assertion. — rovka / detail
clang-r359776-t56109-b56109.tar.gz (May 2, 2019 5:10:55 AM)
- [clangd] Improvements to header mapping: more precise parsing of cppreference symbol pages.
Summary:
Previously we were just jumping from the symbol index to the symbol page, and
grabbing all the headers mentioned there. But the page often lists multiple
symbols, and so we got false positives and thus ambiguities (which were dropped).
Now we look at which declarations are for the symbol we want, and prefer headers
listed above that symbol. If there are none, we fall back to the old behavior.
Reviewers: kadircet
Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D61316 — sammccall / detail - [clangd] Standard library mapping: prefer "primary" versions of functions over variants.
Reviewers: kadircet
Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D61349 — sammccall / detail
clang-r359768-t56106-b56106.tar.gz (May 2, 2019 3:13:08 AM)
- [ARM GlobalISel] Select extensions to < 32 bits
Select G_SEXT and G_ZEXT with destination types smaller than 32 bits in
the exact same way as 32 bits. This overwrites the higher bits, but that
should be ok since all legal users of types smaller than 32 bits ignore
those bits anyway. — rovka / detail - [ARM GlobalISel] Rename some inst selector tests. NFC
Prepare to add support for extensions to types smaller than 32 bits. — rovka / detail - [ARM GlobalISel] Legalize extensions to < 32 bits
Make it legal to extend from e.g. s1 to s8 or s16. — rovka / detail
clang-r359764-t56105-b56105.tar.gz (May 2, 2019 2:23:33 AM)
- [NFC][PowerPC] Return early if the element type is not byte-sized in combineBVOfConsecutiveLoads
Summary:
Based on the Eli Friedman's comments in https://reviews.llvm.org/D60811 , we'd better return early if the element type is not byte-sized in `combineBVOfConsecutiveLoads`.
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D61076 — zhangkang / detail
clang-r359764-t56105-b56105.tar.gz (May 2, 2019 2:23:33 AM)
- [clangd] Restore conventional names for lit configs, and .in/.py split. Fix build_mode indirection. — sammccall / detail
clang-r359762-t56103-b56103.tar.gz (May 2, 2019 1:33:05 AM)
- Object/Minidump: Add support for the ThreadList stream
Summary:
The stream contains the list of threads belonging to the process
described by the minidump. Its structure is the same as the ModuleList
stream, and in fact, I have generalized the ModuleList reading code to
handle this stream too.
Reviewers: amccarth, jhenderson, clayborg
Subscribers: llvm-commits, lldb-commits, markmentovai, zturner
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61064 — labath / detail
clang-r359762-t56103-b56103.tar.gz (May 2, 2019 1:33:05 AM)
- Fix typo in test case. — ahatanak / detail
- Adapt -fsanitize=function to SANITIZER_NON_UNIQUE_TYPEINFO
This follows up after b7692bc3e9ad2691fc07261904b88fb15f30696b "[UBSan] Fix
isDerivedFromAtOffset on iOS ARM64" fixed the RTTI comparison in
isDerivedFromAtOffset on just one platform and then
a25a2c7c9a7e1e328a5bd8274d2d86b1fadc4692 "Always compare C++ typeinfo (based on
libstdc++ implementation)" extended that fix to more platforms.
But there is another RTTI comparison for -fsanitize=function generated in
clang's CodeGenFunction::EmitCall as just a pointer comparison. For
SANITIZER_NON_UNIQUE_TYPEINFO platforms this needs to be extended to also do
string comparison. For that, __ubsan_handle_function_type_mismatch[_abort]
takes the two std::type_info pointers as additional parameters now, checks them
internally for potential equivalence, and returns without reporting failure if
they turn out to be equivalent after all. (NORETURN needed to be dropped from
the _abort variant for that.) Also these functions depend on ABI-specific RTTI
now, so needed to be moved from plain UBSAN_SOURCES (ubsan_handlers.h/cc) to
UBSAN_CXXABI_SOURCES (ubsan_handlers_cxx.h/cc), but as -fsanitize=function is
only supported in C++ mode that's not a problem.
Differential Revision: https://reviews.llvm.org/D60760 — sberg / detail
clang-r359762-t56103-b56103.tar.gz (May 2, 2019 1:33:05 AM)
- Fix for Windows
...after 5745eccef54ddd3caca278d1d292a88b2281528b "Adapt -fsanitize=function to
SANITIZER_NON_UNIQUE_TYPEINFO" — sberg / detail - Adapt -fsanitize=function to SANITIZER_NON_UNIQUE_TYPEINFO
This follows up after b7692bc3e9ad2691fc07261904b88fb15f30696b "[UBSan] Fix
isDerivedFromAtOffset on iOS ARM64" fixed the RTTI comparison in
isDerivedFromAtOffset on just one platform and then
a25a2c7c9a7e1e328a5bd8274d2d86b1fadc4692 "Always compare C++ typeinfo (based on
libstdc++ implementation)" extended that fix to more platforms.
But there is another RTTI comparison for -fsanitize=function generated in
clang's CodeGenFunction::EmitCall as just a pointer comparison. For
SANITIZER_NON_UNIQUE_TYPEINFO platforms this needs to be extended to also do
string comparison. For that, __ubsan_handle_function_type_mismatch[_abort]
takes the two std::type_info pointers as additional parameters now, checks them
internally for potential equivalence, and returns without reporting failure if
they turn out to be equivalent after all. (NORETURN needed to be dropped from
the _abort variant for that.) Also these functions depend on ABI-specific RTTI
now, so needed to be moved from plain UBSAN_SOURCES (ubsan_handlers.h/cc) to
UBSAN_CXXABI_SOURCES (ubsan_handlers_cxx.h/cc), but as -fsanitize=function is
only supported in C++ mode that's not a problem.
Differential Revision: https://reviews.llvm.org/D60760 — sberg / detail
clang-r359758-t56099-b56099.tar.gz (May 2, 2019 12:21:46 AM)
- [Support] Don't check MAP_ANONYMOUS, just use MAP_ANON
Though being marked "deprecated" by the Linux man-pages project
(MAP_ANON is a synonym of MAP_ANONYMOUS), it is the mostly widely
available macro - many systems that don't provide MAP_ANONYMOUS have
MAP_ANON. MAP_ANON is also used here and there in compiler-rt. — maskray / detail - [AMDGPU] gfx1010 lost VOP2 forms of some add/sub
Add legalization of V_ADD_I32, V_SUB_I32, V_SUBREV_I32.
Differential Revision: — rampitec / detail - [AMDGPU] gfx1010 allows VOP3 to have a literal
Differential Revision: https://reviews.llvm.org/D61413 — rampitec / detail
clang-r359758-t56099-b56099.tar.gz (May 2, 2019 12:21:46 AM)
- [libcxx] cmake - guard list remove
REMOVE_ITEM fails if CMAKE_REQUIRED_LIBRARIES is empty on some
versions of cmake. — bcain / detail
clang-r359754-t56095-b56095.tar.gz (May 1, 2019 9:44:31 PM)
- [AMDGPU] gfx1010 constant bus limit
Constant bus limit has increased to 2 with GFX10.
Differential Revision: https://reviews.llvm.org/D61404 — rampitec / detail - [X86] Remove the redundant suffix in vfpclassp[d,s]'s broadcasting variant
The broadcasting variant for instruction vfpclassp[d,s] shouldn't use suffix q/l. So remove them from the template.
Patch by Pengfei Wang
Differential Revision: https://reviews.llvm.org/D61295 — ctopper / detail - lld-link: Make "duplicate resource" error message a bit more concise
Reduces the error message from:
lld-link: error: failed to parse .res file: duplicate resource: type STRINGTABLE (ID 6)/name ID 3/language 1033, in test1.res and in test2.res
To:
lld-link: error: duplicate resource: type STRINGTABLE (ID 6)/name ID 3/language 1033, in test1.res and in test2.res
Make sure every error message emitted by cvtres contains the name of at
least one ".res" file, so that removing the "failed to parse .res file"
string doesn't lose information.
Differential Revision: https://reviews.llvm.org/D61388 — nico / detail
clang-r359754-t56095-b56095.tar.gz (May 1, 2019 9:44:31 PM)
- Replace ad-hoc tracking of pattern for an instantiated class-scope
explicit function specialization with the MemberSpecializationInfo used
everywhere else.
Not NFC: the ad-hoc pattern tracking was not being serialized /
deserialized properly. That's fixed here. — rsmith / detail - Diagnose non-dependent qualified friend function template declarations
that don't match any existing declaration. Don't get confused and treat
such declarations as template *specializations*. — rsmith / detail - [COFF, ARM64] Align global symbol by size for ARM64 MSVC ABI
According to alignment section in below ARM64 ABI document, MSVC could increase
alignment of global data based on its total size. Clang doesn't do this. Compile
the same symbol into different alignments by Clang and MSVC could cause link
error because some instruction encodings, like 64-bit LDR/STR with immediate,
require the target to be 8 bytes aligned, and linker could choose code stream
with such LDR/STR instruction from MSVC and 4 bytes aligned data from Clang into
final image, which actually cannot be linked together
(see https://bugs.llvm.org/show_bug.cgi?id=41506 for more details).
https://docs.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions?view=vs-2019#alignment
Differential Revision: https://reviews.llvm.org/D61225 — tomtan / detail
clang-r359743-t56092-b56092.tar.gz (May 1, 2019 7:06:14 PM)
- remove inalloca parameters in globalopt and simplify argpromotion
Summary:
Inalloca parameters require special handling in some optimizations.
This change causes globalopt to strip the inalloca attribute from
function parameters when it is safe to do so, removes the special
handling for inallocas from argpromotion, and replaces it with a
simple check that causes argpromotion to skip functions that receive
inallocas (for when the pass is invoked on code that didn't run
through globalopt first). This also avoids a case where argpromotion
would incorrectly try to pass an inalloca in a register.
Fixes PR41658.
Reviewers: rnk, efriedma
Reviewed By: rnk
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61286 — inglorion / detail - [FileCheck] Fix line-count.txt test
Summary: Enable currently skipped diagnostic test and fix column number
Reviewers: jhenderson, chandlerc, jdenny, probinson, grimar, arichardson, rnk
Subscribers: JonChesterfield, rogfer01, hfinkel, kristina, rnk, tra, arichardson, grimar, dblaikie, probinson, llvm-commits, hiraditya
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61320 — thopre / detail - FileCheck [4/12]: Introduce @LINE numeric expressions
Summary:
This patch is part of a patch series to add support for FileCheck
numeric expressions. This specific patch introduces the @LINE numeric
expressions.
This commit introduces a new syntax to express a relation a numeric
value in the input text must have with the line number of a given CHECK
pattern: [[#<@LINE numeric expression>]]. Further commits build on that
to express relations between several numeric values in the input text.
To help with naming, regular variables are renamed into pattern
variables and old @LINE expression syntax is referred to as legacy
numeric expression.
Compared to existing @LINE expressions, this new syntax allow arbitrary
spacing between the component of the expression. It offers otherwise the
same functionality but the commit serves to introduce some of the data
structure needed to support more general numeric expressions.
Copyright:
- Linaro (changes up to diff 183612 of revision D55940)
- GraphCore (changes in later versions of revision D55940 and
in new revision created off D55940)
Reviewers: jhenderson, chandlerc, jdenny, probinson, grimar, arichardson, rnk
Subscribers: hiraditya, llvm-commits, probinson, dblaikie, grimar, arichardson, tra, rnk, kristina, hfinkel, rogfer01, JonChesterfield
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60384 — thopre / detail - Revert r359717, "Make check-clang depend on the clang-check binary always"
The Tooling tests do have a lit.local.cfg with
if not config.root.clang_staticanalyzer:
config.unsupported = True
so what's wrong isn't the missing dep, but that lit prints a warning for
the binary missing. This will need a different kind of fix. — nico / detail - Fix erroneous flag in GISel line for arm64-fast-isel-materialize.ll
Accidentally put a fast-isel-abort=2 instead of the GISel abort line.
This test doesn't actually fall back at all for GISel though, so remove the
fallback checks entirely. — paquette / detail - [PGO][CHR] A bug fix.
Summary: Fix a transformation bug where two scopes share a common instrution to hoist.
Reviewers: davidxl
Reviewed By: davidxl
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61405 — yamauchi / detail - [ORC] Pass object buffer ownership back in NotifyEmitted.
Clients who want to regain ownership of object buffers after they have been
linked may now use the NotifyEmitted callback for this purpose.
Note: Currently NotifyEmitted is only called if linking succeeds. If linking
fails the buffer is always discarded. — Lang Hames / detail - [GlobalISel][AArch64] Use fmov for G_FCONSTANT when possible
This adds support for using fmov rather than a standard mov to materialize
G_FCONSTANT when it's safe to do so.
Update arm64-fast-isel-materialize.ll and select-constant.mir to show that the
selection is correct. — paquette / detail
clang-r359743-t56092-b56092.tar.gz (May 1, 2019 7:06:14 PM)
- Consume unexpected "template" keywords after "using"
The parser was dealing with unexpected "template" keywords after "using"
keywords too late and putting the parser into the wrong state, which could
lead to a crash down the line. This change allows the parser to consume the
bad "template" keywords earlier, and continue parsing as if "template" was
never there to begin with for better error recovery. — rtrieu / detail - Revert r359717, "Make check-clang depend on the clang-check binary always"
The Tooling tests do have a lit.local.cfg with
if not config.root.clang_staticanalyzer:
config.unsupported = True
so what's wrong isn't the missing dep, but that lit prints a warning for
the binary missing. This will need a different kind of fix. — nico / detail - [analyzer] Fix buildbot failures caused by a forgotten initialization — szelethus / detail
clang-r359743-t56092-b56092.tar.gz (May 1, 2019 7:06:14 PM)
- [compiler-rt][tests] Propagate COMPILER_RT_UNITTEST_LINK_FLAGS
`COMPILER_RT_UNITTEST_LINK_FLAGS` is dropped in many places, unlike
`COMPILER_RT_UNITTEST_CFLAGS`. This patch attempts to remove that
inconsistency.
Previously reviewed as part of D58951.
Reviewers: sfertile, peter.smith, pzheng, phosek, Hahnfeld, nemanjai, jasonliu
Reviewed By: sfertile
Subscribers: jsji, kubamracek, dberris, mgorny, delcypher, jdoerfert, #sanitizers, llvm-commits
Tags: #llvm, #sanitizers
Differential Revision: https://reviews.llvm.org/D60143 — hubert.reinterpretcast / detail - [tsan] Fix and re-enable user_malloc.cc test
Summary: no_sanitize_thread is not enough as it still puts some tsan instrumentation
Reviewers: eugenis
Subscribers: kubamracek, #sanitizers, llvm-commits
Tags: #sanitizers, #llvm
Differential Revision: https://reviews.llvm.org/D61393 — Vitaly Buka / detail - [sanitizer][NFC] Remove unneeded SizeClassAllocatorLocalCache — Vitaly Buka / detail
- [sanitizer][NFC] Add const/static into a couple of methods — Vitaly Buka / detail
- [Sanitizer] Reland "Cleanup INTERCEPT_FUNCTION macro"
On Linux both version of the INTERCEPT_FUNCTION macro now return true
when interception was successful. Adapt and cleanup some usages.
Also note that `&(func) == &WRAP(func)` is a link-time property, but we
do a runtime check.
Tested on Linux and macOS.
Previous attempt reverted by: 5642c3feb03d020dc06a62e3dc54f3206a97a391
This attempt to bring order to the interceptor macro goes the other
direction and aligns the Linux implementation with the way things are
done on Windows.
Reviewed By: vitalybuka, rnk
Differential Revision: https://reviews.llvm.org/D61358 — yln / detail
clang-r359743-t56092-b56092.tar.gz (May 1, 2019 7:06:14 PM)
- Add missing locale requirement to test.
Linux is failing even though the test runner does report this locale
is available, but the test still isn't expected to work on platforms
without the locale (like Android). — danalbert / detail
clang-r359723-t56084-b56084.tar.gz (May 1, 2019 2:55:30 PM)
- [AArch64] Add tests for bool vector reductions; NFC
Baseline tests for PR41635. — nikic / detail - Try to unbreak sphinx bot after r359714
The now-correctly-referenced label dbi_type_server_map_substream didn't
exist. Rewrite things a bit after looking at NewDBIHdr in dbi.h and its
use in dbi.cpp in the reference implementation. — nico / detail
clang-r359723-t56084-b56084.tar.gz (May 1, 2019 2:55:30 PM)
- Make clang/utils/creduce-clang-crash.py executable — rnk / detail
- [analyzer] Don't display implementation checkers under -analyzer-checker-help, but do under the new flag -analyzer-checker-help-hidden
During my work on analyzer dependencies, I created a great amount of new
checkers that emitted no diagnostics at all, and were purely modeling some
function or another.
However, the user shouldn't really disable/enable these by hand, hence this
patch, which hides these by default. I intentionally chose not to hide alpha
checkers, because they have a scary enough name, in my opinion, to cause no
surprise when they emit false positives or cause crashes.
The patch introduces the Hidden bit into the TableGen files (you may remember
it before I removed it in D53995), and checkers that are either marked as
hidden, or are in a package that is marked hidden won't be displayed under
-analyzer-checker-help. -analyzer-checker-help-hidden, a new flag meant for
developers only, displays the full list.
Differential Revision: https://reviews.llvm.org/D60925 — szelethus / detail
clang-r359723-t56084-b56084.tar.gz (May 1, 2019 2:55:30 PM)
- [sanitizer][NFC] Set LargeMmapAllocator type from PrimaryAllocator
They need to have same AddressSpaceView and MapUnmapCallback.
Reviewers: eugenis
Subscribers: kubamracek, #sanitizers, llvm-commits
Tags: #sanitizers, #llvm
Differential Revision: https://reviews.llvm.org/D61168 — Vitaly Buka / detail - [scudo][NFC] Remove unneeded template from scudo::CombinedAllocator
Reviewers: cryptoad, eugenis
Reviewed By: cryptoad
Subscribers: #sanitizers, llvm-commits
Tags: #sanitizers, #llvm
Differential Revision: https://reviews.llvm.org/D61162 — Vitaly Buka / detail
clang-r359717-t56081-b56081.tar.gz (May 1, 2019 1:59:09 PM)
- Make check-clang depend on the clang-check binary always
check-clang (the target that runs all clang tests) used to
only depend on clang-check (a binary like clang-tidy,
clang-refactor, etc) if the static analyzer is enabled.
However, several lit tests call clang-check unconditionally,
so always depend on it.
Fixes a "could not find clang-check" lit warning in clean builds with
the static analyzer disabled.
Also sort the deps in the CMake file and put just one dep on each line.
Differential Revision: https://reviews.llvm.org/D61324 — nico / detail - Minor tweaks to PDB docs
- Fix a broken link
- Some spelling fixes
- Remove an unnecessary "amortized"
- Don't say "log(n) random access"; "random access" means O(1)
- Make MSF overview a bit more concise
Differential Revision: https://reviews.llvm.org/D61196 — nico / detail
clang-r359717-t56081-b56081.tar.gz (May 1, 2019 1:59:09 PM)
- Make check-clang depend on the clang-check binary always
check-clang (the target that runs all clang tests) used to
only depend on clang-check (a binary like clang-tidy,
clang-refactor, etc) if the static analyzer is enabled.
However, several lit tests call clang-check unconditionally,
so always depend on it.
Fixes a "could not find clang-check" lit warning in clean builds with
the static analyzer disabled.
Also sort the deps in the CMake file and put just one dep on each line.
Differential Revision: https://reviews.llvm.org/D61324 — nico / detail - [Parser] Avoid correcting delayed typos in array subscript multiple times.
We correct some typos in `ActOnArraySubscriptExpr` and
`ActOnOMPArraySectionExpr`, so when their result is `ExprError`, we can
end up correcting delayed typos in the same expressions again. In
general it is OK but when `NumTypos` is incorrect, we can hit the
assertion
> Assertion failed: (Entry != DelayedTypos.end() && "Failed to get the state for a TypoExpr!"), function getTypoExprState, file clang/lib/Sema/SemaLookup.cpp, line 5219.
Fix by replacing some subscript `ExprResult` with typo-corrected expressions
instead of keeping the original expressions. Thus if original expressions
contained `TypoExpr`, we'll use corrected expressions instead of trying to
correct them again.
rdar://problem/47403222
Reviewers: rsmith, erik.pilkington, majnemer
Reviewed By: erik.pilkington
Subscribers: jkorous, dexonsmith, cfe-commits
Differential Revision: https://reviews.llvm.org/D60848 — vsapsai / detail
clang-r359717-t56081-b56081.tar.gz (May 1, 2019 1:59:09 PM)
- [sanitizer][NFC] Get type of AllocatorCache from CombinedAllocator
Reviewers: eugenis, cryptoad, kcc
Reviewed By: kcc
Subscribers: kcc, kubamracek, #sanitizers, llvm-commits
Tags: #sanitizers, #llvm
Differential Revision: https://reviews.llvm.org/D61155 — Vitaly Buka / detail
clang-r359712-t56080-b56080.tar.gz (May 1, 2019 1:15:28 PM)
clang-r359712-t56080-b56080.tar.gz (May 1, 2019 1:15:28 PM)
- [clang-format] Fix a bug in AlignConsecutiveDeclarations.
Fixes PR37175
Differential Revision: https://reviews.llvm.org/D61222 — owenpan / detail
clang-r359709-t56078-b56078.tar.gz (May 1, 2019 11:55:14 AM)
- [PowerPC] add test that could infinite loop with reordered transforms; NFC
This is a slightly reduced version of the test from D61384.
Adding this as a preliminary step, so I can update D61149 with
the proposed fix. — spatel / detail - [X86][SSE] Fold scalar horizontal add/sub for non-0/1 element extractions
We already perform horizontal add/sub if we extract from elements 0 and 1, this patch extends it to non-0/1 element extraction indices (as long as they are from the lowest 128-bit vector).
Differential Revision: https://reviews.llvm.org/D61263 — rksimon / detail - [globalisel] Update the legalizer documentation
Summary:
* The getActionDefinitionsBuilder() is now documented.
* Includes descriptions of the various actions (legal*, widenScalar*, lower*,
etc).
* Includes descriptions of the various predicates (*If, *For,
*ForCartesianProduct, etc.)
* Includes the rule-order details
* Removed the out-of-date prohibition on non-power-of-2 types.
* Removed the Vector types section since it was incorrect and vectors follow the
same ruleset as scalars. They're only special in the sense that more of the
actions and predicates are meaningful for them (e.g. moreElements).
* Clarified the position on context sensitive legality (which is not permitted)
and contrasted this with context sensitive legalization (which is permitted).
Reviewers: bogner, aditya_nandakumar, volkan, aemerson, paquette, arsenm
Reviewed By: paquette
Subscribers: wdng, rovka, kristof.beyls, jfb, Petar.Avramovic, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61273 — dsanders / detail - [AMDGPU] gfx1010 GCNRegBankReassign pass
Reassign registers to reduce register bank conflicts.
Differential Revision: https://reviews.llvm.org/D61344 — rampitec / detail - Option spell checking: Penalize delimiter flags if input has no argument
If the user passes a flag like `-version` to a program, it's more likely
they mean `--version` than `-version:`, since there's no parameter
passed. Hence, give delimited arguments a penalty of 1 if the user input
doesn't contain the delimiter or no data after it.
The motivation is that with this, lld-link can suggest "--version"
instead of "-version:" for "-version" and "-nodefaultlib" instead of
"-nodefaultlib:" for "-nodefaultlibs".
Differential Revision: https://reviews.llvm.org/D61382 — nico / detail - [AMDGPU] gfx1010 GCNNSAReassign pass
Convert NSA into non-NSA images.
Differential Revision: https://reviews.llvm.org/D61341 — rampitec / detail - [AMDGPU] gfx1010 MIMG implementation
Differential Revision: https://reviews.llvm.org/D61339 — rampitec / detail
clang-r359709-t56078-b56078.tar.gz (May 1, 2019 11:55:14 AM)
- [Driver] Explicitly request platform rtlib in the Driver pic test
This test checks whether crtbegin.o and crtend.o appear on the link
line, but names of these files may be affected by the choice of the
rtlib, specifically when compiler-rt is used as the default rtlib
the names will be clang_rt.crtbegin.o and clang_rt.crtend.o instead
of crtbeginS.o and crtendS.o. To avoid the test failure, explicitly
request to use the platform rtlib.
Differential Revision: https://reviews.llvm.org/D61383 — phosek / detail - Bump DIAG_SIZE_SEMA, as we've hit it.
$ grep 'DIAG_SIZE_SEMA =' include/clang/Basic/DiagnosticIDs.h
DIAG_SIZE_SEMA = 4000,
$ grep DIAG $(build)/tools/clang/include/clang/Basic/DiagnosticSemaKinds.inc | wc -l
3499 — scott.linder / detail
clang-r359709-t56078-b56078.tar.gz (May 1, 2019 11:55:14 AM)
- [sanitizer] Implement reallocarray.
Summary:
It's a cross of calloc and realloc. Sanitizers implement calloc-like check for size
overflow.
Reviewers: vitalybuka, kcc
Subscribers: kubamracek, #sanitizers, llvm-commits
Tags: #sanitizers, #llvm
Differential Revision: https://reviews.llvm.org/D61108 — eugenis / detail
clang-r359709-t56078-b56078.tar.gz (May 1, 2019 11:55:14 AM)
- [WebAssembly] WASI support for libcxx
This adds explicit support for the WASI platform to libcxx.
WASI libc uses some components from musl, however it's not fully compatible
with musl, so we're planning to stop using _LIBCPP_HAS_MUSL_LIBC and
customize for WASI libc specifically.
Differential Revision: https://reviews.llvm.org/D61336
Reviewers: sbc100, ldionne — djg / detail
clang-r359697-t56077-b56077.tar.gz (May 1, 2019 10:54:42 AM)
- [ThinLTO] Fix unreachable code when parsing summary entries.
Summary:
Early returns were causing some code to be skipped. This was missed
since the summary entries are typically at the end of the llvm assembly
file.
Fixes PR41663.
Reviewers: RKSimon, wristow
Subscribers: mehdi_amini, inglorion, eraman, steven_wu, dexonsmith, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61355 — tejohnson / detail - [AMDGPU] gfx1010 DS implementation
Differential Revision: https://reviews.llvm.org/D61332 — rampitec / detail - Revert "[DAGCombiner] try repeated fdiv divisor transform before building estimate"
This reverts commit fb9a5307a94e6f1f850e4d89f79103b123f16279 (rL359398)
because it can cause an infinite loop due to opposing combines. — spatel / detail - Fix 80 column violation. NFCI. — rksimon / detail
- [SCEV] Use isKnownViaNonRecursiveReasoning for smax simplification
Summary:
Commit
rL331949: SCEV] Do not use induction in isKnownPredicate for simplification umax
changed the codepath for umax from isKnownPredicate to
isKnownViaNonRecursiveReasoning to avoid compile time blow up (and as
I found out also stack overflows). However, there is an exact copy of
the code for umax that was lacking this change. In D50167 I want to unify
these codepaths, but to avoid that being a behavior change for the smax
case, pull this independent bit out of it.
Reviewed By: sanjoy
Differential Revision: https://reviews.llvm.org/D61166 — kfischer / detail
clang-r359697-t56077-b56077.tar.gz (May 1, 2019 10:54:42 AM)
- [analyzer][tests][NFC] Add EOF newlines, normalize reference expected files
Reference expected files not ending with a newline are normalized to
have said newlines. Additionally `plist-macros-with-expansion.cpp.plist`
is modified to add a line that is ignored by `%diff_plist`, but not by
the more sensitive pattern proposed by
http://lists.llvm.org/pipermail/cfe-dev/2019-April/061904.html for
`%normalize_plist`. — hubert.reinterpretcast / detail - [analyzer][tests] Use diff_plist, correct order of arguments for missed cases; NFC
For various files under `clang/test/Analysis`, D52036 applied
`%diff_plist` to replace `diff` invocations with certain options and
D56340 swapped the order of the arguments so that the reference file
comes first. The tests that used `tail` to filter the test output were
not modified accordingly. This patch applies the corresponding update
to those tests. — hubert.reinterpretcast / detail
clang-r359690-t56076-b56076.tar.gz (May 1, 2019 9:58:14 AM)
- [lit][tests][AIX] Update expected form of diagnostic messages; use `not` to normalize non-zero exit values
Summary:
Various tests in the `lit` testing suite expect specific return codes
and forms of diagnostic message from utility programs. As per
POSIX.1-2017 XCU Section 1.4, Utility Description Defaults, "[the]
format of diagnostic messages for most utilities is unspecified".
The STDERR subsections of the `cat` and `wc` utilities merely indicate
that "[the] standard error shall be used only for diagnostic messages".
The corresponding EXIT STATUS subsections merely indicate, with regard
to errors, an exit value of >0.
The affected tests are updated to accept the applicable diagnostic
message as produced by the utilities on AIX. The exit value is
normalized using `not` as necessary.
Reviewers: xingxue, sfertile, jasonliu
Reviewed By: xingxue
Subscribers: delcypher, jsji, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60553 — hubert.reinterpretcast / detail - [tests] Add host-byteorder-*-endian; update XFAILs of big-endian triples
Summary:
Triple components in `XFAIL` lines are tested against the target triple.
Various tests that are expected to fail on big-endian hosts are marked
as being `XFAIL` for big-endian targets. This patch corrects these tests
by having them test against a new `host-byteorder-big-endian` feature.
Reviewers: xingxue, sfertile, jasonliu
Reviewed By: xingxue
Subscribers: jvesely, nhaehnle, fedor.sergeev, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60551 — hubert.reinterpretcast / detail - [llvm-ar][llvm-nm][llvm-size] Change -long-option to --long-option in tests. NFC — maskray / detail
- [X86][SSE] Add demanded elts support X86ISD::PMULDQ\PMULUDQ
Add to SimplifyDemandedVectorEltsForTargetNode and SimplifyDemandedBitsForTargetNode — rksimon / detail - Fix OptTable::findNearest() adding delimiter for free
Prior to this, OptTable::findNearest() thought that the input `--foo`
had an editing distance of 0 from an existing flag `--foo=`, which made
it suggest flags with delimiters more often than flags without one.
After this, it correctly assigns this case an editing distance of 1.
Differential Revision: https://reviews.llvm.org/D61373 — nico / detail - [LoopInfo] Faster implementation of setLoopID. NFC.
Summary:
This change was part of D46460. However, in the meantime rL341926 fixed the
correctness issue here. What remained was the performance issue in setLoopID
where it would iterate through all blocks in the loop and their successors,
rather than just the predecessor of the header (the later presumably being
much faster). We already have the `getLoopLatches` to compute precisely these
basic blocks in an efficient manner, so just use it (as the original commit
did for `getLoopID`).
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D61215 — kfischer / detail
clang-r359690-t56076-b56076.tar.gz (May 1, 2019 9:58:14 AM)
- [clang-format] Fix bug that misses some function-like macro usages
Fixes PR41483
Differential Revision: https://reviews.llvm.org/D61297 — owenpan / detail
clang-r359680-t56074-b56074.tar.gz (May 1, 2019 9:01:08 AM)
- [X86][SSE] Add SSE vector shift support to SimplifyDemandedVectorEltsForTargetNode vector splitting — rksimon / detail
- Wrap to 80 columns, no behavior change — nico / detail
- [X86][SSE] Split 512-bit -> 128-bit vector directly in SimplifyDemandedVectorEltsForTargetNode — rksimon / detail
clang-r359677-t56072-b56072.tar.gz (May 1, 2019 7:08:22 AM)
- [X86][SSE] Add 512-bit vector support to SimplifyDemandedVectorEltsForTargetNode vector splitting — rksimon / detail
- DAG: allow DAG pointer size different from memory representation.
In preparation for supporting ILP32 on AArch64, this modifies the SelectionDAG
builder code so that pointers are allowed to have a larger type when "live" in
the DAG compared to memory.
Pointers get zero-extended whenever they are loaded, and truncated prior to
stores. In addition, a few not quite so obvious locations need updating:
* A GEP that has not been marked inbounds needs to enforce the IR-documented
2s-complement wrapping at the memory pointer size. Inbounds GEPs are
undefined if they overflow the address space, so no additional operations
are needed.
* Signed comparisons would give incorrect results if performed on the
zero-extended values.
This shouldn't affect CodeGen for now, but will become active when the AArch64
ILP32 support is committed. — Tim Northover / detail
clang-r359677-t56072-b56072.tar.gz (May 1, 2019 7:08:22 AM)
clang-r359677-t56072-b56072.tar.gz (May 1, 2019 7:08:22 AM)
- [libFuzzer] Add --dump-input-on-failure to help diagnose AArch64 failures
The fork-siguser.test and fork.test intermittently fail on the AArch64
buildbot. Unfortunately these failures are not reproducible on a similar
machine and seem to fail when the machines are under load. Before
suggesting the tests be marked unsupported for AArch64 we'd like to see
if we can get some more information about the failures to see if it helps
us reproduce. This patch adds --dump-input-on-failure to the FileCheck
commands to see if we can get some more information about the failures.
Differential Revision: https://reviews.llvm.org/D61315 — psmith / detail
clang-r359673-t56070-b56070.tar.gz (May 1, 2019 6:02:59 AM)
- [X86][SSE] Add X86ISD::PACKSS\PACKUS to SimplifyDemandedVectorEltsForTargetNode vector splitting — rksimon / detail
- [X86][SSE] Add scalar horizontal add/sub tests for element extractions from upper lanes
As suggested on D61263 — rksimon / detail
clang-r359673-t56070-b56070.tar.gz (May 1, 2019 6:02:59 AM)
- Get rid of a bunch of 'unused variable' warnings in test when run with debug_level set. NFC — marshall / detail
clang-r359670-t56069-b56069.tar.gz (May 1, 2019 5:06:58 AM)
- [X86][SSE] Add X86ISD::UNPCKL\UNPCK to SimplifyDemandedVectorEltsForTargetNode vector splitting — rksimon / detail
- [X86][SSE] Move extract_subvector(pshufb) fold to SimplifyDemandedVectorEltsForTargetNode
This lets us hit more cases than combineExtractSubvector and allows us reuse more code. — rksimon / detail - [llvm-objdump] Print newlines before and after "Disassembly of section ...:"
This improves readability and the behavior is consistent with GNU objdump.
The new test test/tools/llvm-objdump/X86/disassemble-section-name.s
checks we print newlines before and after "Disassembly of section ...:"
Differential Revision: https://reviews.llvm.org/D61127 — maskray / detail - [X86] SimplifyDemandedVectorEltsForTargetNode - pull out vector halving code. NFCI.
Pull out the HADD/HSUB code to halve vector widths if the upper half isn't used - prep work to adding support for other opcodes. — rksimon / detail
clang-r359666-t56067-b56067.tar.gz (May 1, 2019 4:10:47 AM)
- [X86][SSE] Extract i1 elements from vXi1 bool vectors
This is an alternative to D59669 which more aggressively extracts i1 elements from vXi1 bool vectors using a MOVMSK.
Differential Revision: https://reviews.llvm.org/D61189 — rksimon / detail - [yaml2obj] - Report when unknown section is referenced from program header declaration block.
Previously we did not report this.
Also this removes multiple lookups in the map
what cleanups the code.
Differential revision: https://reviews.llvm.org/D61322 — grimar / detail
clang-r359666-t56067-b56067.tar.gz (May 1, 2019 4:10:47 AM)
- Change llvm-{objdump,readobj} -long-option to --long-option or well-known short options in tests. NFC — maskray / detail
clang-r359661-t56066-b56066.tar.gz (May 1, 2019 3:20:31 AM)
- [llvm-readobj] Change -t to --symbols in tests. NFC
-t is --symbols in llvm-readobj but --section-details (unimplemented) in readelf.
The confusing option should not be used since we aim for improving
compatibility.
Keep just one llvm-readobj -t use case in test/tools/llvm-readobj/symbols.test — maskray / detail - [gold] Fix two readelf tests after rL359649 — maskray / detail
clang-r359661-t56066-b56066.tar.gz (May 1, 2019 3:20:31 AM)
- [compiler-rt] Use correct spelling of the -Wno-pedantic variable
This addresses the issue introduced in r359646 which is causing
sanitizer bots to fail. — phosek / detail
clang-r359658-t56064-b56064.tar.gz (May 1, 2019 1:22:57 AM)
- [X86FixupLEAs] Hoist the calls to isLEA out of the 3 separate functions and put it in the basic block instruction loop. NFC
Now need to check it 3 different times. Just do it once at the top of the loop. — ctopper / detail - Fix test/tools/llvm-readobj/mips-plt.test — maskray / detail
clang-r359658-t56064-b56064.tar.gz (May 1, 2019 1:22:57 AM)
- lib/Header: Fix Visual Studio builds try #2
Summary:
This is a follow up to r355253 and a better fix than the first attempt
which was r359257.
We can't install anything from ${CMAKE_CFG_INTDIR}, because this value
is only defined at build time, but we still must make sure to copy the
headers into ${CMAKE_CFG_INTDIR}/lib/clang/$VERSION/include, because the lit
tests look for headers there. So for this fix we revert to the
old behavior of copying the headers to ${CMAKE_CFG_INTDIR}/lib/clang/$VERSION/include
during the build and then installing them from the source tree.
Reviewers: smeenai, vzakhari, phosek
Reviewed By: smeenai, vzakhari
Subscribers: mgorny, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D61220 — tstellar / detail
clang-r359658-t56064-b56064.tar.gz (May 1, 2019 1:22:57 AM)
- Use __extension__ to suppress __EH_FRAME_LIST__ warnings
gcc -pedantic => warning: ISO C forbids empty initializer braces
clang -pedantic => -Wzero-length-array + -Wgnu-empty-initializer — maskray / detail
clang-r359658-t56064-b56064.tar.gz (May 1, 2019 1:22:57 AM)
- [libcxx] Move CMake file to src, avoid using globs
This addresses the longstanding FIXME and makes libc++ build more
similar to other runtimes.
Differential Revision: https://reviews.llvm.org/D61275 — phosek / detail
clang-r359652-t56062-b56062.tar.gz (May 1, 2019 12:26:49 AM)
- [llvm-readobj] llvm-readobj --elf-output-style=GNU => llvm-readelf. NFC
The latter is much more common.
A dedicated --elf-output-style=GNU test demonstrating it is the same as
llvm-readelf is sufficient. — maskray / detail
clang-r359652-t56062-b56062.tar.gz (May 1, 2019 12:26:49 AM)
- [compiler-rt] Cleanup the --target and --sysroot handling
This addresses issue introduced in r359646. — phosek / detail
clang-r359649-t56061-b56061.tar.gz (Apr 30, 2019 11:30:54 PM)
- [llvm-readobj] Change -long-option to --long-option in tests. NFC
We use both -long-option and --long-option in tests. Switch to --long-option for consistency.
In the "llvm-readelf" mode, -long-option is discouraged as it conflicts with grouped short options and it is not accepted by GNU readelf.
While updating the tests, change llvm-readobj -s to llvm-readobj -S to reduce confusion ("s" is --section-headers in llvm-readobj but --symbols in llvm-readelf). — maskray / detail - Revert "[llvm] r359313 - [PowerPC] Update P9 vector costs for insert/extract element"
This causes segfaults during optimized builds. More details, including a reproducer, are on the llvm-commits thread for r359313. — dlj / detail
clang-r359647-t56059-b56059.tar.gz (Apr 30, 2019 9:38:57 PM)
- Delete outdated comment about DISubprogram. NFC
rL301501 deleted DisplayName and rearranged the operands. — maskray / detail
clang-r359647-t56059-b56059.tar.gz (Apr 30, 2019 9:38:57 PM)
- [compiler-rt] Pass sysroot and disable pedantic for crtbegin.o/crtend.o
These are needed to make bots happy.
Differential Revision: https://reviews.llvm.org/D61363 — phosek / detail - [compiler-rt] Rework the object build support
The initial implementation didn't properly support cross-compilation
via the runtime build, the updated implementation should address that
by expanding the CMAKE_C_COMPILE_OBJECT variable with correct values.
Differential Revision: https://reviews.llvm.org/D61356 — phosek / detail
clang-r359643-t56057-b56057.tar.gz (Apr 30, 2019 8:49:22 PM)
- [JITLink] Make sure we explicitly deallocate memory on failure.
JITLinkGeneric phases 2 and 3 (focused on applying fixups and finalizing memory,
respectively) may fail for various reasons. If this happens, we need to
explicitly de-allocate the memory allocated in phase 1 (explicitly, because
deallocation may also fail and so is implemented as a method returning error).
No testcase yet: I am still trying to decide on the right way to test totally
platform agnostic code like this. — Lang Hames / detail
clang-r359643-t56057-b56057.tar.gz (Apr 30, 2019 8:49:22 PM)
- [libFuzzer] Disable i386 on non-Linux platforms
Summary: Disable i386 on non-Linux platforms since it is unwanted and broken on Windows.
Reviewers: morehouse, rnk
Reviewed By: morehouse
Subscribers: mgorny, #sanitizers, llvm-commits
Tags: #sanitizers, #llvm
Differential Revision: https://reviews.llvm.org/D61354 — metzman / detail
clang-r359643-t56057-b56057.tar.gz (Apr 30, 2019 8:49:22 PM)
- Fix a bunch of unordered container tests that were failing when _LIBCPP_DEBUG was set. — marshall / detail
clang-r359640-t56055-b56055.tar.gz (Apr 30, 2019 7:59:21 PM)
- [sanitizer][zorg] Print URL with local reproducer info — Vitaly Buka / detail
clang-r359640-t56055-b56055.tar.gz (Apr 30, 2019 7:59:21 PM)
- Make some comments that were meant to be for public documentation
actually public documentation (i.e. // -> ///). — echristo / detail - [llvm-objcopy] Simplify SHT_NOBITS -> SHT_PROGBITS promotion
GNU objcopy uses bfd_elf_get_default_section_type to decide the candidate section type,
which roughly translates to our [a] (I assume SEC_COMMON implies SHF_ALLOC):
(!(Sec.Flags & ELF::SHF_ALLOC) || Flags & (SectionFlag::SecContents | SectionFlag::SecLoad)))
Then, it updates the section type in bfd/elf.c:elf_fake_sections if:
if (this_hdr->sh_type == SHT_NULL)
this_hdr->sh_type = sh_type; // common case
else if (this_hdr->sh_type == SHT_NOBITS
&& sh_type == SHT_PROGBITS
&& (asect->flags & SEC_ALLOC) != 0) // uncommon case
...
this_hdr->sh_type = sh_type;
If the following condition is met the uncommon branch is executed:
if (elf_section_type (osec) == SHT_NULL
&& (osec->flags == isec->flags
|| (final_link
&& ((osec->flags ^ isec->flags)
& ~(SEC_LINK_ONCE | SEC_LINK_DUPLICATES | SEC_RELOC)) == 0)))
I suggest we just ignore this clause and follow the common case
behavior, which is done in this patch. Rationales to do so:
If --set-section-flags is a no-op (osec->flags == isec->flags)
(corresponds to the "readonly" test in set-section-flags.test), GNU
objcopy will require (Sec.Flags & ELF::SHF_ALLOC). [a] is essentially:
Flags & (SectionFlag::SecContents | SectionFlag::SecLoad)
This special case is not really useful. Non-SHF_ALLOC SHT_NOBITS
sections do not make much sense and it doesn't matter if they are
SHT_NOBITS or SHT_PROGBITS.
For all other RUN lines in set-section-flags.test, the new behavior
matches GNU objcopy, i.e. this patch improves compatibility.
Differential Revision: https://reviews.llvm.org/D60189 — maskray / detail - gn build: Fix build on macOS after r359570 / r359527 — nico / detail
- gn build: Merge r359626 — nico / detail
- [WebAssembly] Update expectations for gcc torture tests
This is needed to make the wasm waterfall green again
after we land the update to WASI:
https://github.com/WebAssembly/waterfall/pull/492
Differential Revision: https://reviews.llvm.org/D61351 — sbc / detail - [InstCombine] Limit a vector demanded elts rule which was producing invalid IR.
The demanded elts rules introduced for GEPs in https://reviews.llvm.org/rL356293 replaced vector constants with undefs (by design). It turns out that the LangRef disallows such cases when indexing structs. The right fix is probably to relax the langref requirement, and update other passes to expect the result, but for the moment, limit the transform to avoid compiler crashes.
This should fix https://bugs.llvm.org/show_bug.cgi?id=41624. — reames / detail - [WebAssembly] Test the "wasm32-wasi" triple
Add triple tests for "wasm32-wasi" and "wasm64-wasi", and also remove the
"-musl" component from the existing wasm triple tests as we're not using that
in practice (WASI libc is derived in part from musl, but it is not fully
musl-compatible).
Differential Revision: https://reviews.llvm.org/D61334
Reviewer: sbc100 — djg / detail - [MemorySSA] Invalidate MemorySSA if AA or DT are invalidated.
Summary:
MemorySSA keeps internal pointers of AA and DT.
If these get invalidated, so should MemorySSA.
Reviewers: george.burgess.iv, chandlerc
Subscribers: jlebar, Prazek, llvm-commits
Tags: LLVM
Differential Revision: https://reviews.llvm.org/D61043 — asbirlea / detail - [ORC] Move SimpleCompiler/ConcurrentIRCompiler definitions into a .cpp file.
SimpleCompiler is no longer templated, so there's no reason for this code to be
in a header any more. — Lang Hames / detail - [llvm-profdata] Fix indentation error in docs. NFC. — xur / detail
- [AliasAnalysis/NewPassManager] Invalidate AAManager less often.
Summary:
This is a redo of D60914.
The objective is to not invalidate AAManager, which is stateless, unless
there is an explicit invalidate in one of the AAResults.
To achieve this, this patch adds an API to PAC, to check precisely this:
is this analysis not invalidated explicitly == is this analysis not abandoned == is this analysis stateless, so preserved without explicitly being marked as preserved by everyone
Reviewers: chandlerc
Subscribers: mehdi_amini, jlebar, george.burgess.iv, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61284 — asbirlea / detail - [AMDGPU] gfx1010 VMEM and SMEM implementation
Differential Revision: https://reviews.llvm.org/D61330 — rampitec / detail - [llvm-profdata] Fix indentation error. NFC — xur / detail
- Add an include of Module since we actually access it now and remove
the forward declaration. — echristo / detail - Fix a few -Werror warnings:
- Remove a variable only used in an assert
- Fix pessimizing move warning around copy elision — echristo / detail - [PassManagerBuilder] Add option for interleaved loops, for loop vectorize.
Summary:
Match NewPassManager behavior: add option for interleaved loops in the
old pass manager, and use that instead of the flag used to disable loop unroll.
No changes in the defaults.
Reviewers: chandlerc
Subscribers: mehdi_amini, jlebar, dmgreen, hsaito, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61030 — asbirlea / detail - [JITLink] Add debugging output to print resolved external atoms. — Lang Hames / detail
- [ORC][JITLink] Name in-memory compiled objects after their source modules.
In-memory compiled object buffer identifiers will now be derived from the
identifiers of their source IR modules. This makes it easier to connect
in-memory objects with their source modules in debugging output. — Lang Hames / detail - [llvm-profdata] Add overlap command to compute similarity b/w two profile files
Add overlap functionality to llvm-profdata tool to compute the similarity
between two profile files.
Differential Revision: https://reviews.llvm.org/D60977 — xur / detail - [NFC][InlineCost] cleanup - comments, overflow handling.
Reviewed By: apilipenko
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60751 — fedor.sergeev / detail - [X86][SSE] Fold extract_subvector(extend(x)) -> extend_vector_inreg(x)
This adds any extend support - folding to zero_extend_vector_inreg (PMOVZX) for legality
Minor improvement for PR39709 — rksimon / detail - [WebAssembly] Fix test after r359602
Update the expected output for this test now that the EXPLICIT_NAME
flag is being printed. — djg / detail - Fix stack-use-after free after r359580
`Candidate` was a StringRef refering to a temporary string.
Instead, create a local variable for the string and use
a StringRef referring to that. — nico / detail - [WebAssembly] Support EXPLICIT_NAME symbols in llvm-readobj
Teach llvm-readobj about WASM_SYMBOL_EXPLICIT_NAME.
Differential Revision: https://reviews.llvm.org/D61323
Reviewer: sbc100 — djg / detail - [WebAssembly] Support f16 libcalls
Add support for f16 libcalls in WebAssembly. This entails adding signatures
for the remaining F16 libcalls, and renaming gnu_f2h_ieee/gnu_h2f_ieee to
truncsfhf2/extendhfsf2 for consistency between f32 and f64/f128 (compiler-rt
already supports this).
Differential Revision: https://reviews.llvm.org/D61287
Reviewer: dschuff — djg / detail - [X86] Remove if that's always true
It's been like this since it was added in a refactor of this code.
Fixes PR41659 — ctopper / detail - [SimplifyLibCalls] Clean up code (NFC)
Fix pointer check after dereferencing (PR41665). — evandro / detail - [AArch64] add more tests for constant folding failures; NFC — spatel / detail
- [X86] If PreprocessISelDAG reorders a load before a call, make sure we remove dead nodes from the graph
The reordering can leave at least a dead TokenFactor in the graph. This cause the linearize scheduler to fail with something like the assert seen in PR22614. This is only one of many ways we can break the linearize scheduler today so I can't say for sure that any of the other failures in that bug were caused by this issue.
This takes the heavy hammer approach of just running RemoveDeadNodes unconditionally at the end of the PreprocessISelDAG. If this turns out to be a compile time hit, we can try to refine it.
Differential Revision: https://reviews.llvm.org/D61164 — ctopper / detail - [X86] Initial cleanups on the FixupLEAs pass. Separate Atom LEA creation from other LEA optimizations.
This removes some of the class variables. Merge basic block processing into
runOnMachineFunction to keep the flags local.
Pass MachineBasicBlock around instead of an iterator. We can get the iterator in
the few places that need it. Allows a range-based outer for loop.
Separate the Atom optimization from the rest of the optimizations. This allows
fixupIncDec to create INC/DEC and still allow Atom to turn it back into LEA
when profitable by its heuristics.
I'd like to improve fixupIncDec to turn LEAs into ADD any time the base or index
register is equal to the destination register. This is profitable regardless of
the various slow flags. But again we would want Atom to be able to undo that.
Differential Revision: https://reviews.llvm.org/D60993 — ctopper / detail - Re-reland "[Option] Fix PR37006 prefix choice in findNearest"
This was first reviewed in https://reviews.llvm.org/D46776 and
landed in r332299, but got reverted because it broke the PS4
bots.
https://reviews.llvm.org/D50410 fixed this, and then this
change was re-reviewed at https://reviews.llvm.org/D50515 and
relanded in r341329. It got reverted due to causing MSan issues.
However, nobody wrote down the error message and the bot link
is dead, so I'm relanding this to capture the MSan error.
I'll then either fix it, or copy it somewhere and revert if
fixing looks difficult. — nico / detail
clang-r359640-t56055-b56055.tar.gz (Apr 30, 2019 7:59:21 PM)
- Fix auto-init test
r359628 changed the initialization of padding to follow C, but I didn't update the C++ tests. — jfb / detail - [WebAssembly] Use the "wasm32-wasi" triple in tests
Similar to https://reviews.llvm.org/D61334, update clang tests to use the
"wasm32-wasi" triple, removing the "-musl" environment and omitting the
"-unknown" vendor.
Differential Revision: https://reviews.llvm.org/D61338
Reviewer: sbc100 — djg / detail - Variable auto-init: don't initialize aggregate padding of all aggregates
Summary:
C guarantees that brace-init with fewer initializers than members in the
aggregate will initialize the rest of the aggregate as-if it were static
initialization. In turn static initialization guarantees that padding is
initialized to zero bits.
Quoth the Standard:
C17 6.7.9 Initialization ❡21
If there are fewer initializers in a brace-enclosed list than there are elements
or members of an aggregate, or fewer characters in a string literal used to
initialize an array of known size than there are elements in the array, the
remainder of the aggregate shall be initialized implicitly the same as objects
that have static storage duration.
C17 6.7.9 Initialization ❡10
If an object that has automatic storage duration is not initialized explicitly,
its value is indeterminate. If an object that has static or thread storage
duration is not initialized explicitly, then:
* if it has pointer type, it is initialized to a null pointer;
* if it has arithmetic type, it is initialized to (positive or unsigned) zero;
* if it is an aggregate, every member is initialized (recursively) according to
these rules, and any padding is initialized to zero bits;
* if it is a union, the first named member is initialized (recursively)
according to these rules, and any padding is initialized to zero bits;
<rdar://problem/50188861>
Reviewers: glider, pcc, kcc, rjmccall, erik.pilkington
Subscribers: jkorous, dexonsmith, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D61280 — jfb / detail - Remove two unnecessary wrappers of canPassInRegisters
These extra layers aren't necessary. — rnk / detail - Set LoopInterleaved in the PassManagerBuilder.
Summary: Corresponds to D61030.
Subscribers: jlebar, cfe-commits, llvm-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D61142 — asbirlea / detail - [Driver] Support compiler-rt crtbegin.o/crtend.o for Linux
When compiler-rt is selected as the runtime library for Linux targets
use its crtbegin.o/crtend.o implemenetation rather than platform one
if available.
Differential Revision: https://reviews.llvm.org/D59264 — phosek / detail - Add requires amdgpu-registered-target for amdgpu-float16.cpp — yaxunl / detail
- AMDGPU: Enable _Float16 — yaxunl / detail
- [LibTooling] Fix broken test after r359574.
r359574 changed the way that failures are reported, which broke the test TransformerTest.NodePartNameDeclRefFailure which detects a faiure. — ymandel / detail - [LibTooling] Change Transformer's TextGenerator to a partial function.
Summary:
Changes the signature of the TextGenerator std::function to return an Expected<std::string>
instead of std::string to allow for (non-fatal) failures. Previously, we
expected that any failures would be expressed with assertions. However, that's
unfriendly to running the code in servers or other places that don't want their
library calls to crash the program.
Correspondingly, updates Transformer's handling of failures in TextGenerators
and the signature of `ChangeConsumer`.
Reviewers: ilya-biryukov
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D61015 — ymandel / detail
clang-r359640-t56055-b56055.tar.gz (Apr 30, 2019 7:59:21 PM)
- [libFuzzer] Fix failing test: sigint.test
Summary:
Fix sigint.test by making it require msan rather
than enumerating unsupported platforms.
Reviewers: kcc
Reviewed By: kcc
Subscribers: #sanitizers, llvm-commits
Tags: #sanitizers, #llvm
Differential Revision: https://reviews.llvm.org/D61353 — metzman / detail - Added test. — hctim / detail
- [sanitizer_common] Added 64-bit signed flag parser.
Summary: Adds a 64-bit signed flag parser for GWP-ASan's use.
Reviewers: vlad.tsyrklevich, eugenis
Subscribers: kubamracek, #sanitizers, llvm-commits, vitalybuka, morehouse, pcc, kcc
Tags: #sanitizers, #llvm
Differential Revision: https://reviews.llvm.org/D61342 — hctim / detail - [libFuzzer] temporarily disable a test on windows, where there is no memmem in the usual place — kcc / detail
- [libFuzzer] add MagicSeparatorTest — kcc / detail
- Revert r359325 "[NFC][Sanitizer] Change "return type" of INTERCEPT_FUNCTION to void"
Changing INTERCEPT_FUNCTION to return void is not functionally correct.
IMO the best way to communicate failure or success of interception is
with a return value, not some external address comparison.
This change was also creating link errors for _except_handler4_common,
which is exported from ucrtbase.dll in 32-bit Windows.
Also revert dependent changes r359362 and r359466. — rnk / detail - [libFuzzer] Replace -seed_corpus to better support fork mode on Win
Summary:
Pass seed corpus list in a file to get around argument length limits on Windows.
This limit was preventing many uses of fork mode on Windows.
Reviewers: kcc, morehouse
Reviewed By: kcc
Subscribers: #sanitizers, llvm-commits
Tags: #sanitizers, #llvm
Differential Revision: https://reviews.llvm.org/D60980 — metzman / detail - [compiler-rt][builtins][sanitizers] Update compiler-rt test cases for
compatibility with system's toolchain
This patch aims to:
- Guard ompiler-rt/test/builtins/Unit/compiler_rt_logb_test.c with macros, so
the test runs on GLIBC versions >= 2.23. This is because the test relies on
comparing its computed values to libm. Oolder versions might not compute to the
same value as the compiler-rt value.
- Update compiler-rt/test/sanitizer_common/TestCases/Posix/getpw_getgr.cc
so that std::string is not used, since false positives may be detected.
Differential Revision: https://reviews.llvm.org/D60644 — amyk / detail - Reland "[compiler-rt] Simple crtbegin.o and crtend.o implementation"
Clang relies on existence of certain symbols that are normally
provided by crtbegin.o/crtend.o. However, LLVM does not currently
provide implementation of these files, instead relying on either
libgcc or implementations provided as part of the system.
This change provides an initial implementation of crtbegin.o/crtend.o
that can be used on system that don't provide crtbegin.o/crtend.o as
part of their C library.
Differential Revision: https://reviews.llvm.org/D28791 — phosek / detail - fix broken test — metzman / detail
- remove extra zeros — metzman / detail
- remove stale comment — metzman / detail
- change order — metzman / detail
- fix comment — metzman / detail
- [libFuzzer] Enable for i386
Summary: Get libFuzzer to build on i386 and fix tests.
Subscribers: mgorny, #sanitizers, llvm-commits
Tags: #sanitizers, #llvm
Differential Revision: https://reviews.llvm.org/D61070 — metzman / detail - Fix issues with testing for i386 — metzman / detail
- Enable x86 builds — metzman / detail
- Revert "[compiler-rt] Simple crtbegin.o and crtend.o implementation"
This reverts commit r359576 since it's failing on Windows bots. — phosek / detail - [compiler-rt] Simple crtbegin.o and crtend.o implementation
Clang relies on existence of certain symbols that are normally
provided by crtbegin.o/crtend.o. However, LLVM does not currently
provide implementation of these files, instead relying on either
libgcc or implementations provided as part of the system.
This change provides an initial implementation of crtbegin.o/crtend.o
that can be used on system that don't provide crtbegin.o/crtend.o as
part of their C library.
Differential Revision: https://reviews.llvm.org/D28791 — phosek / detail
clang-r359640-t56055-b56055.tar.gz (Apr 30, 2019 7:59:21 PM)
- Support overaligned types in `aligned_storage`.
Summary:
The current implementation of aligned storage was written before we had `alignas`, so it used a list of builtin types to force the alignment. But this doesn't work overaligned requests.
This patch adds a fallback case supporting over-alignment. It only affects case that were previously ill-formed.
Reviewers: rsmith, ldionne, dlj, mclow.lists
Reviewed By: mclow.lists
Subscribers: mclow.lists, dexonsmith, libcxx-commits
Differential Revision: https://reviews.llvm.org/D61301 — ericwf / detail - [libc++][CMake] Refactor how we link against system libraries
Summary:
Instead of populating the global LIBCXX_LIBRARIES, we use the link-time
dependency management built into CMake to propagate link flags. This
leads to a cleaner and easier-to-follow build.
Reviewers: phosek, smeenai, EricWF
Subscribers: mgorny, christof, jkorous, dexonsmith, jfb, mstorsjo, libcxx-commits
Tags: #libc
Differential Revision: https://reviews.llvm.org/D60969 — Louis Dionne / detail
clang-r359570-t56023-b56023.tar.gz (Apr 30, 2019 10:42:04 AM)
- gn build: Add check-clangd target after r3359424
r359527 already merged some of that to the GN build,
but it was missing some bits as well.
The check-clangd target works (at least for now) differently than all
the other check-foo targets, see https://reviews.llvm.org/D61187
For that reason, there's no gni file and the generated lit configs are
not (yet?) added to llvm-lit/BUILD.gn. — nico / detail - Add llvm-profdata to LLVM_TOOLCHAIN_TOOLS
This is required for using PGO on Windows but isn't in the Windows
release packages. Windows packages are built with
LLVM_INSTALL_TOOLCHAIN_ONLY so only includes llvm "tools" listed here.
Differential Revision: https://reviews.llvm.org/D61317 — russell_gallop / detail
clang-r359568-t56021-b56021.tar.gz (Apr 30, 2019 9:45:47 AM)
- [llvm-objcopy] Add RISC-V support for -B/-O
Reviewers: jorgbrown, espindola, alexshap, jhenderson
Subscribers: emaste, arichardson, fedor.sergeev, jakehehrlich, kito-cheng, shiva0217, MaskRay, rogfer01, rkruppe, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61272 — rupprecht / detail
clang-r359568-t56021-b56021.tar.gz (Apr 30, 2019 9:45:47 AM)
- [scudo][standalone] Add the memory reclaiming mechanism
Summary:
This CL implements the memory reclaiming function `releaseFreeMemoryToOS`
and its associated classes. Most of this code was originally written by
Aleksey for the Primary64 in sanitizer_common, and I made some changes to
be able to implement 32-bit reclaiming as well. The code has be restructured
a bit to accomodate for freelist of batches instead of the freearray used
in the current sanitizer_common code.
Reviewers: eugenis, vitalybuka, morehouse, hctim
Reviewed By: vitalybuka
Subscribers: srhines, mgorny, delcypher, #sanitizers, llvm-commits
Tags: #llvm, #sanitizers
Differential Revision: https://reviews.llvm.org/D61214 — cryptoad / detail
clang-r359566-t56020-b56020.tar.gz (Apr 30, 2019 8:49:41 AM)
- [SelectionDAG] remove div-by-zero constant folding restriction
We don't have this restriction in IR, so it should not be here
either simply out of consistency. Code that wants to handle FP
exceptions is expected to use the 'strict' variants of these
nodes.
We don't get the frem case because frem by 0.0 produces NaN (invalid),
and that's the remaining check here (so the removed check for frem
was dead code AFAIK).
This is the only place in SDAG that uses "HasFPExceptions", so I
think we should remove that entirely as a follow-up patch. — spatel / detail - [llvm-nm] Add --special-syms no-op flag
Differential revision: https://reviews.llvm.org/D60502 — evgeny777 / detail
clang-r359566-t56020-b56020.tar.gz (Apr 30, 2019 8:49:41 AM)
- [clangd] gen_std uses multiprocessing pool to be fast. While here, log ambiguous symbols. NFC — sammccall / detail
clang-r359562-t56016-b56016.tar.gz (Apr 30, 2019 7:53:44 AM)
- gn build: Merge r359455 — nico / detail
- [AArch64] add tests for fdiv/frem constant folding (PR41668); NFC — spatel / detail
- [TableGen] Fix null pointer dereferencing in token parser.
Reported in https://www.viva64.com/en/b/0629/ — rksimon / detail
clang-r359562-t56016-b56016.tar.gz (Apr 30, 2019 7:53:44 AM)
- Fix inconsistency in calculating DIAG_START_ values.
This was introduced at r313975. As DIAG_SIZE_CROSSTU and
DIAG_SIZE_COMMENT are both 100 this should be NFC.
Differential Revision: https://reviews.llvm.org/D61264 — russell_gallop / detail
clang-r359557-t56014-b56014.tar.gz (Apr 30, 2019 6:56:59 AM)
- vs integration: vs2019 support — hans / detail
- [cmake] Fix error message on simulated VS version check
For clang-cl self hosts in VS2015 environment this was reporting: "Host
Clang must have at least -fms-compatibility-version=19.00.24213.1, your
version is 9.0.0".
This check fires as CMake detects the simulated environment as _MSC_VER
1900, which is truncated. This makes it less than the required
19.00.24213.1.
Differential revision: https://reviews.llvm.org/D61188 — russell_gallop / detail - Revert rL359519 : [MemorySSA] Invalidate MemorySSA if AA or DT are invalidated.
Summary:
MemorySSA keeps internal pointers of AA and DT.
If these get invalidated, so should MemorySSA.
Reviewers: george.burgess.iv, chandlerc
Subscribers: jlebar, Prazek, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61043
........
This was causing windows build bot failures — rksimon / detail - [SLP] Lit test that cannot get vectorized due to lack of look-ahead operand reordering heuristic.
The code in this test is not vectorized by SLP because its operand reordering cannot look beyond the immediate predecessors.
This will get fixed in a follow-up patch that introduces the look-ahead operand reordering heuristic.
Committed on behalf of @vporpo (Vasileios Porpodas)
Differential Revision: https://reviews.llvm.org/D61283 — rksimon / detail - [llvm-objcopy] - Check dynamic relocation sections for broken references.
This is a fix for https://bugs.llvm.org/show_bug.cgi?id=41371.
Currently, it is possible to break the sh_link field of the dynamic relocation section
by removing the section it refers to. The patch fixes an issue and adds 2 test cases.
One of them shows that it does not seem possible to break the sh_info field.
I added an assert to verify this.
Differential revision: https://reviews.llvm.org/D60825 — grimar / detail - Update checks in an instcombine test, NFC
This reduces the delta in some incoming work that changes this test. — jmorse / detail - [ARM] Implement TTI::getMemcpyCost
This implements TargetTransformInfo method getMemcpyCost, which estimates the
number of instructions to which a memcpy instruction expands to.
Differential Revision: https://reviews.llvm.org/D59787 — sjoerdmeijer / detail - Fix for bug 41512: lower INSERT_VECTOR_ELT(ZeroVec, 0, Elt) to SCALAR_TO_VECTOR(Elt) for all SSE flavors
Current LLVM uses pxor+pinsrb on SSE4+ for INSERT_VECTOR_ELT(ZeroVec, 0, Elt) insead of much simpler movd.
INSERT_VECTOR_ELT(ZeroVec, 0, Elt) is idiomatic construct which is used e.g. for _mm_cvtsi32_si128(Elt) and for lowest element initialization in _mm_set_epi32.
So such inefficient lowering leads to significant performance digradations in ceratin cases switching from SSSE3 to SSE4.
https://bugs.llvm.org/show_bug.cgi?id=41512
Here INSERT_VECTOR_ELT(ZeroVec, 0, Elt) is simply converted to SCALAR_TO_VECTOR(Elt) when applicable since latter is closer match to desired behavior and always efficiently lowered to movd and alike.
Committed on behalf of @Serge_Preis (Serge Preis)
Differential Revision: https://reviews.llvm.org/D60852 — rksimon / detail
clang-r359557-t56014-b56014.tar.gz (Apr 30, 2019 6:56:59 AM)
- Fix gcc "-Wdangling-else" warning. NFCI. — rksimon / detail
- Fix gcc "-Wdangling-else" warnings. NFCI. — rksimon / detail
clang-r359557-t56014-b56014.tar.gz (Apr 30, 2019 6:56:59 AM)
clang-r359544-t56008-b56008.tar.gz (Apr 30, 2019 4:28:25 AM)
- Revert r359520 — xbolva00 / detail
- [TargetLowering] findOptimalMemOpLowering. NFCI.
This was a local static funtion in SelectionDAG, which I've promoted to
TargetLowering so that I can reuse it to estimate the cost of a memory
operation in D59787.
Differential Revision: https://reviews.llvm.org/D59766 — sjoerdmeijer / detail - [ARM GlobalISel] Widen small shift operands
The legalizer was already widening the shift amount. Add tests for that
behaviour, and also support widening the shifted value. — rovka / detail - [AsmPrinter] Make AsmPrinter::HandlerInfo::Handler a unique_ptr
Handlers.clear() in AsmPrinter::doFinalization() will destroy these handlers.
A unique_ptr makes the ownership clearer. — maskray / detail - [ARM GlobalISel] Be more careful about bailing out
Bail out on function arguments/returns with types aggregating an
unsupported type. This fixes cases where we would happily and
incorrectly lower functions taking e.g. [1 x i64] parameters, when we
don't even support plain i64 yet. — rovka / detail
clang-r359544-t56008-b56008.tar.gz (Apr 30, 2019 4:28:25 AM)
- [analyzer][UninitializedObjectChecker] PR41611: Regard vector types as primitive
https://bugs.llvm.org/show_bug.cgi?id=41611
Similarly to D61106, the checker ran over an llvm_unreachable for vector types:
struct VectorSizeLong {
VectorSizeLong() {}
__attribute__((__vector_size__(16))) long x;
};
void __vector_size__LongTest() {
VectorSizeLong v;
}
Since, according to my short research,
"The vector_size attribute is only applicable to integral and float scalars,
although arrays, pointers, and function return values are allowed in conjunction
with this construct."
[src: https://gcc.gnu.org/onlinedocs/gcc-4.6.1/gcc/Vector-Extensions.html#Vector-Extensions]
vector types are safe to regard as primitive.
Differential Revision: https://reviews.llvm.org/D61246 — szelethus / detail
clang-r359537-t56005-b56005.tar.gz (Apr 30, 2019 3:02:10 AM)
- [TargetLowering] Change getOptimalMemOpType to take a function attribute list
The MachineFunction wasn't used in getOptimalMemOpType, but more importantly,
this allows reuse of findOptimalMemOpLowering that is calling getOptimalMemOpType.
This is the groundwork for the changes in D59766 and D59787, that allows
implementation of TTI::getMemcpyCost.
Differential Revision: https://reviews.llvm.org/D59785 — sjoerdmeijer / detail - MSan: handle llvm.lifetime.start intrinsic
Summary:
When a variable goes into scope several times within a single function
or when two variables from different scopes share a stack slot it may
be incorrect to poison such scoped locals at the beginning of the
function.
In the former case it may lead to false negatives (see
https://github.com/google/sanitizers/issues/590), in the latter - to
incorrect reports (because only one origin remains on the stack).
If Clang emits lifetime intrinsics for such scoped variables we insert
code poisoning them after each call to llvm.lifetime.start().
If for a certain intrinsic we fail to find a corresponding alloca, we
fall back to poisoning allocas for the whole function, as it's now
impossible to tell which alloca was missed.
The new instrumentation may slow down hot loops containing local
variables with lifetime intrinsics, so we allow disabling it with
-mllvm -msan-handle-lifetime-intrinsics=false.
Reviewers: eugenis, pcc
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60617 — glider / detail - [DebugInfo] DW_OP_deref_size in PrologEpilogInserter.
The PrologEpilogInserter need to insert a DW_OP_deref_size before
prepending a memory location expression to an already implicit
expression to avoid having the existing expression act on the memory
address instead of the value behind it.
The reason for using DW_OP_deref_size and not plain DW_OP_deref is that
big-endian targets need to read the right size as simply truncating a
larger read would yield the wrong result (LSB bytes are not at the lower
address).
This re-commit fixes issues reported in the first one. Namely deref was
inserted under wrong conditions and additionally the deref_size argument
was incorrectly encoded.
Differential Revision: https://reviews.llvm.org/D59687 — markus / detail
clang-r359533-t56002-b56002.tar.gz (Apr 29, 2019 9:46:03 PM)
- [NFC][PowerPC] Use -check-prefixes to simplify the check in code-align.ll
Summary:
When checking the same output, we can use the `-check-prefixes` to simplify the check.
For example, if we want to check below output.
```
; GENERIC-LABEL: .globl foo
; BASIC-LABEL: .globl foo
; PWR-LABEL: .globl foo
; GENERIC: .p2align 2
; BASIC: .p2align 4
; PWR: .p2align 4
; GENERIC: @foo
; BASIC: @foo
; PWR: @foo
```
If we use `-check-prefixes`
```
... -check-prefixes=CHECK,GENERAL
... -check-prefixes=CHECK,BASIC
... -check-prefixes=CHECK,PWR
```
Above check can be simplify to:
```
; CHECK-LABEL: .globl foo
; GENERIC: .p2align 2
; BASIC: .p2align 4
; PWR: .p2align 4
; CHECK: @foo
```
Reviewed By: hfinkel
Differential Revision: https://reviews.llvm.org/D61227 — zhangkang / detail - [DAGCombiner] Do not generate ISD::ADDE node if adde is not legal for the target when combine ISD::TRUNC node
Do not combine (trunc adde(X, Y, Carry)) into (adde trunc(X), trunc(Y), Carry),
if adde is not legal for the target. Even it's at type-legalize phase.
Because adde is special and will not be legalized at operation-legalize phase later.
This fixes: PR40922
https://bugs.llvm.org/show_bug.cgi?id=40922
Differential Revision: https://reviews.llvm.org//D60854 — wuzish / detail - [ORC] Fix an ambiguous call in a unit test. — Lang Hames / detail
clang-r359533-t56002-b56002.tar.gz (Apr 29, 2019 9:46:03 PM)
- [analyzer] Treat functions without run-time branches as "small".
Currently we always inline functions that have no branches, i.e. have exactly
three CFG blocks: ENTRY, some code, EXIT. This makes sense because when there
are no branches, it means that there's no exponential complexity introduced
by inlining such function. Such functions also don't trigger various fundamental
problems with our inlining mechanism, such as the problem of inlined
defensive checks.
Sometimes the CFG may contain more blocks, but in practice it still has
linear structure because all directions (except, at most, one) of all branches
turned out to be unreachable. When this happens, still treat the function
as "small". This is useful, in particular, for dealing with C++17 if constexpr.
Differential Revision: https://reviews.llvm.org/D61051 — dergachev / detail - [analyzer] SmartPtrModeling: Fix a null dereference.
Don't crash when trying to model a call in which the callee is unknown
in compile time, eg. a pointer-to-member call.
Differential Revision: https://reviews.llvm.org/D61285 — dergachev / detail
clang-r359527-t56000-b56000.tar.gz (Apr 29, 2019 7:54:07 PM)
- [clangd] Fix GN build — Vitaly Buka / detail
clang-r359527-t56000-b56000.tar.gz (Apr 29, 2019 7:54:07 PM)
clang-r359527-t56000-b56000.tar.gz (Apr 29, 2019 7:54:07 PM)
- Implement LWG 2960: nonesuch is insufficiently useless — marshall / detail
- Mark LWG#2977 as 'Nothing to do'. NFC — marshall / detail
clang-r359522-t55999-b55999.tar.gz (Apr 29, 2019 6:58:00 PM)
- [CommandLine} Wire-up cl::list::setDefault() so it will work correctly with cl::ResetAllOptionOccurrences() in unittests. Part 2 of 5
Summary:
With this change, cl::ResetAllOptionOccurrences() clears
cl::list just like cl::opt, allowing users to call
cl::ParseCommandLineOptions() multiple times without interference from
previous calls.
Reviewers: rnk
Reviewed By: rnk
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61234 — dhinton / detail - [ORC] Allow JITDylib definition generators to return Errors.
Background: A definition generator can be attached to a JITDylib to generate
new definitions in response to queries. For example: a generator that forwards
calls to dlsym can map symbols from a dynamic library into the JIT process on
demand.
If definition generation fails then the generator should be able to return an
error. This allows the JIT API to distinguish between the case where a
generator does not provide a definition, and the case where it was not able to
determine whether it provided a definition due to an error.
The immediate motivation for this is cross-process symbol lookups: If the
remote-lookup generator is attached to a JITDylib early in the search list, and
if a generator failure is misinterpreted as "no definition in this JITDylib" then
lookup may continue and bind to a different definition in a later JITDylib, which
is a bug. — Lang Hames / detail
clang-r359520-t55997-b55997.tar.gz (Apr 29, 2019 6:01:42 PM)
- [PDB] Fixed null pointer dereference
Reviewers: zturner, rnk
Reviewed By: rnk
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61279 — xbolva00 / detail - [MemorySSA] Invalidate MemorySSA if AA or DT are invalidated.
Summary:
MemorySSA keeps internal pointers of AA and DT.
If these get invalidated, so should MemorySSA.
Reviewers: george.burgess.iv, chandlerc
Subscribers: jlebar, Prazek, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61043 — asbirlea / detail
clang-r359517-t55996-b55996.tar.gz (Apr 29, 2019 5:05:33 PM)
- Add __builtin_dcbf support for PPC
Summary:
This patch adds support for __builtin_dcbf for PPC.
__builtin_dcbf copies the contents of a modified block from the data cache
to main memory and flushes the copy from the data cache.
Differential revision: https://reviews.llvm.org/D59843 — saghir / detail - [PDB] Fix hash function used to write /src/headerblock
lld-link used to write PDB files that DIA couldn't recover natvis
files from if:
- The global strings table was > 64kiB
- There were at least 3 natvis files
The cause was that the hash function for the /src/headerblock stream
was incorrect: It needs to be truncated to 16 bit.
If the global strings table was <= 64kiB, truncating to 16 bit is a
no-op, so this wasn't needed for small programs.
If there are only 1 or 2 natvis files, then the growth strategy in
HashTable::grow() would mean the hash table would have 2 buckets (for 1
natvis file) or 4 buckets (for 4 natvis files), and since the hash
function is used modulo number of buckets, and since 2 and 4 divide
0x10000, the missing `% 0x10000` is a no-op there too. For 3 natvis
files, the hash table grows to 6 buckets, which has a factor that's not
common with 0x10000 and the difference starts to matter.
Fixes PR41626.
Differential Revision: https://reviews.llvm.org/D61277 — nico / detail - gn build: Merge r359252 — nico / detail
- [ORC] Replace the LLJIT/LLLazyJIT Create methods with Builder utilities.
LLJITBuilder and LLLazyJITBuilder construct LLJIT and LLLazyJIT instances
respectively. Over time these will allow more configurable options to be
added while remaining easy to use in the default case, which for default
in-process JITing is now:
auto J = ExitOnErr(LLJITBuilder.create()); — Lang Hames / detail - [JITLink] Move a typedef.
The FinalizeContinuation typedef belongs on the Allocation class, not the
allocator. — Lang Hames / detail - [WebAssembly] Make an assertion message prettier. NFC.
This is a follow-up to https://reviews.llvm.org/D59521. — djg / detail
clang-r359517-t55996-b55996.tar.gz (Apr 29, 2019 5:05:33 PM)
- Add __builtin_dcbf support for PPC
Summary:
This patch adds support for __builtin_dcbf for PPC.
__builtin_dcbf copies the contents of a modified block from the data cache
to main memory and flushes the copy from the data cache.
Differential revision: https://reviews.llvm.org/D59843 — saghir / detail - [Diagnostics] Support -Wtype-limits for GCC compatibility
Summary:
GCC's -Wtype-limits (part of -Wextra):
Warn if a comparison is always true or always false due to the limited range of the data type
Reviewers: rsmith, aaron.ballman, lebedev.ri, thakis
Reviewed By: rsmith
Subscribers: lebedev.ri, jdoerfert, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D58841 — xbolva00 / detail - Re-land r359250, [COFF] Statically link certain runtime library functions
Reverts the revert of r359251, this time with fixed tests.
Differential Revision: https://reviews.llvm.org/D55229 — rnk / detail - Make test more robust by writing stdout/stderr to different files.
Our internal build bots were failing this test randomly as the stderr
output was emitted to the file in the middle of the stdout output
line that the test was checking. — dyung / detail
clang-r359508-t55994-b55994.tar.gz (Apr 29, 2019 4:09:25 PM)
- [ThinLTO] Adding architecture name into saved object filename
Summary:
For ThinLTOCodegenerator, it has an option to save the object file
outputs into a directory which is essential for debug info. Tools like lldb
and dsymutil will look for these object files for debug info.
On Darwin platform, you can link fat binaries with one single clang
driver invocation like:
$ clang -arch x86_64 -arch i386 -Wl,-object_path_lto,$TMPDIR ...
Unfornately, the output object files for one architecture is going to
overwrite the previous ones and one architecture slice will end up with
no debug info. One example for this is to turn on ThinLTO for sanitizer
dylibs in compiler-rt project.
To fix the issue, add the name for the architecture into the name of the
output object file.
rdar://problem/35482935
Reviewers: tejohnson, bd1976llvm, dexonsmith, JDevlieghere
Reviewed By: dexonsmith
Subscribers: mehdi_amini, aprantl, inglorion, eraman, hiraditya, jkorous, dang, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60924 — steven_wu / detail
clang-r359508-t55994-b55994.tar.gz (Apr 29, 2019 4:09:25 PM)
- Simplify exclusion of nested classes from extern template instantiation, NFC
Summary:
This simplifies three checks for MS ABI, Win Itanium, or Win GNU to just
"is Windows".
The question remains, however, if this is really the correct thing to
do. We could, for example, only not consider inner classes to be
externally available if the outer class has a dllexport annotation.
However, I will leave that as future work.
Reviewers: hans, mstorsjo
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D61278 — rnk / detail - When skipping code at the start of a file during PCH use, Preprocessor::Lex
is not used since it consumes all preprocessor directives until it returns
a real token. Using the specific Lexer (i.e. CurLexer->Lex) makes it
possible to stop skipping after an #include or #pragma hdrstop. Previously
the skipping code was only handling CurLexer, now all will be handled
correctly.
Fixes: llvm.org/PR41585
Differential Revision: https://reviews.llvm.org/D61217 — mikerice / detail
clang-r359505-t55993-b55993.tar.gz (Apr 29, 2019 3:13:09 PM)
- [WebAssembly] Define the signature for __stack_chk_fail
The WebAssembly backend needs to know the signatures of all runtime
libcall functions. This adds the signature for __stack_chk_fail which was
previously missing.
Also, make the error message for a missing libcall include the name of
the function.
Differential Revision: https://reviews.llvm.org/D59521
Reviewed By: sbc100 — djg / detail - [PowerPC] Try harder to avoid load/move-to VSR for partial vector loads
Change the PPCISelLowering.cpp function that decides to avoid update form in
favor of partial vector loads to know about newer load types and to not be
confused by the chain operand.
Differential Revision: https://reviews.llvm.org/D60102 — froese / detail - [GlobalISel][AArch64] Select llvm.aarch64.crypto.sha1h
This was falling back and gives us a reason to create a selectIntrinsic function
which we would need eventually anyway. Update arm64-crypto.ll to show that we
correctly select it.
Also factor out the code for finding an intrinsic ID. — paquette / detail - [UpdateTestChecks] Allow Lbegin_func without a leading period
On mingw/i686, local labels don't start with a leading period.
Also escape the leading period, as it previously could match
any char.
Differential Revision: https://reviews.llvm.org/D61254 — mstorsjo / detail - [X86] Run CFIInstrInserter on Windows if Dwarf is used
This is necessary since SVN r330706, as tail merging can include
CFI instructions since then.
This fixes PR40322 and PR40012.
Differential Revision: https://reviews.llvm.org/D61252 — mstorsjo / detail - Fix one more case of passing options with too many dashes. — dhinton / detail
clang-r359505-t55993-b55993.tar.gz (Apr 29, 2019 3:13:09 PM)
- [ASTImporter] Add an ImportImpl method to allow customizing Import behavior.
Summary:
We are currently implementing support in LLDB that reconstructs the STL templates from
the target program in the expression evaluator. This reconstruction happens during the
import process from our debug info AST into the expression evaluation AST, which means
we need a way to intercept the ASTImporter import process.
This patch adds an protected ImportImpl method that we can overwrite in LLDB to implement
our special importing logic (which is essentially just looking into a C++ module that is attached to
the target context). Because ImportImpl has to call MapImported/AddToLookup for the decls it
creates, this patch also exposes those via a new unified method and checks that we call it when
importing decls.
Reviewers: martong, balazske, a.sidorin, shafik, a_sidorin
Reviewed By: martong, a_sidorin
Subscribers: rnkovacs, cfe-commits, lldb-commits, aprantl
Tags: #clang
Differential Revision: https://reviews.llvm.org/D59485 — Raphael Isemann / detail
clang-r359505-t55993-b55993.tar.gz (Apr 29, 2019 3:13:09 PM)
- Fix FIXME added in r359339
We have windows.h in asan_win.cc, so we can just use the correct
prototypes for these EH-related interceptors without worrying.
Also fix an unused variable warning while I'm here. — rnk / detail - Pacify sanitizer lint script after r359498 — rnk / detail
- [AddressSanitizer] [Windows] Fix HeapReAlloc and _recalloc bugs in asan_malloc_win.cc
HeapReAlloc should allow for 0 sized reallocations without freeing the memory block provided by the user.
_recalloc previously did not zero new memory after reallocation.
https://reviews.llvm.org/D61268 — mcgov / detail
clang-r359494-t55990-b55990.tar.gz (Apr 29, 2019 2:13:41 PM)
- [sanitizer] Add BUILDBOT_MONO_REPO_PATH to use for local debugging — Vitaly Buka / detail
- Add LLVM lab buildslaves for Windows/Ubuntu builders.
The initial buildslave configurations for a new hardware in LLVM lab.
Requested for the staged buildebot http://lab.llvm.org:8014
Patch by Vlad Vereschaka.
Differential Revision: https://reviews.llvm.org/D60635 — gkistanova / detail
clang-r359494-t55990-b55990.tar.gz (Apr 29, 2019 2:13:41 PM)
- [gn] Use label_name rather than target_output_name for objects
Multiple targets in the same output directory can use the same
target_output_name. The typical example of that is having a shared
and a static library of the same, e.g. libc++.so and libc++.a.
When that's the case, the object files produced for each target
are going to conflict. Using the label_name avoids this conflict
since labels are guaranteed to be unique within a single BUILD.gn
file which corresponds to a single output directory.
Differential Revision: https://reviews.llvm.org/D60329 — phosek / detail - Fix string UAF in new FileCheck test — rnk / detail
- [X86][SSE] isHorizontalBinOp - add support for target shuffles
Add target shuffle decoding to isHorizontalBinOp as well as ISD::VECTOR_SHUFFLE support.
This does mean we can go through bitcasts so we need to bitcast the extracted args to ensure they are the correct type
Fixes PR39936 and should help with PR39920/PR39921
Differential Revision: https://reviews.llvm.org/D61245 — rksimon / detail - [llvm-pdbutil] FunctionDumper::dump(PDBSymbolTypeFunctionArg) - fix null dereference warning
Reported in https://www.viva64.com/en/b/0629/ — rksimon / detail - computePolynomialFromPointer - add missing early-out return for non-pointer types.
Reported in https://www.viva64.com/en/b/0629/ — rksimon / detail - [InstCombine] reduce code duplication; NFC
Follow-up to:
rL359482
Avoid this potential problem throughout by giving the type a name
and verifying the assumption that both operands are the same type. — spatel / detail - Fix additional cases of more that two dashes for options in tests. — dhinton / detail
- Remove duplicate line. NFCI.
Reported in https://www.viva64.com/en/b/0629/ — rksimon / detail - [InstCombine] visitFCmpInst - appease copy+paste pattern warning. NFCI.
PVS Studio's copy+paste recognizer was seeing this as a typo, technically Op0/Op1 in a fcmp should always be the same type, but we might as well avoid the issue.
Reported in https://www.viva64.com/en/b/0629/ — rksimon / detail - [globalisel] Improve Legalizer debug output
* LegalizeAction should be printed by name rather than number
* Newly created instructions are incomplete at the point the observer first sees
them. They are therefore recorded in a small vector and printed just before
the legalizer moves on to another instruction. By this point, the instruction
must be complete. — dsanders / detail - [CommandLine] Don't allow unlimitted dashes for options. Part 1 or 5
Summary:
Prior to this patch, the CommandLine parser would strip an
unlimitted number of dashes from options. This patch limits it to
two.
Reviewers: rnk
Reviewed By: rnk
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61229 — dhinton / detail - [X86] scaleShuffleMask - avoid potential signed overflow warning.
Use size_t assignment to prevent a bad explicit type conversion warning.
Given the typical size of shuffle masks this was never going to happen, but this at least stops the warning.
Reported in https://www.viva64.com/en/b/0629/ — rksimon / detail - [TextAPI] Fix Symbol::dump which was failing to append the SymbolKind string.
Reported in https://www.viva64.com/en/b/0629/ — rksimon / detail - [llvm-mca][x86] Fix MMX PMOVMSKB test
This is defined as part of SSE1, XMM PMOVMSKB doesn't appear until SSE2 — rksimon / detail - [DAG] Refactor DAGCombiner::ReassociateOps
Summary:
Extract the logic for doing reassociations
from DAGCombiner::reassociateOps into a helper
function DAGCombiner::reassociateOpsCommutative,
and use that helper to trigger reassociation
on the original operand order, or the commuted
operand order.
Codegen is not identical since the operand order will
be different when doing the reassociations for the
commuted case. That causes some unfortunate churn in
some test cases. Apart from that this should be NFC.
Reviewers: spatel, craig.topper, tstellar
Reviewed By: spatel
Subscribers: dmgreen, dschuff, jvesely, nhaehnle, javed.absar, sbc100, jgravelle-google, hiraditya, aheejin, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61199 — bjope / detail - FileCheck [3/12]: Stricter parsing of @LINE expressions
Summary:
This patch is part of a patch series to add support for FileCheck
numeric expressions. This specific patch gives earlier and better
diagnostics for the @LINE expressions.
Rather than detect parsing errors at matching time, this commit adds
enhance parsing to detect issues with @LINE expressions at parse time
and diagnose them more accurately.
Copyright:
- Linaro (changes up to diff 183612 of revision D55940)
- GraphCore (changes in later versions of revision D55940 and
in new revision created off D55940)
Reviewers: jhenderson, chandlerc, jdenny, probinson, grimar, arichardson, rnk
Subscribers: hiraditya, llvm-commits, probinson, dblaikie, grimar, arichardson, tra, rnk, kristina, hfinkel, rogfer01, JonChesterfield
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60383 — thopre / detail - [TableGen] Fix null pointer dereferencing.
Reported in https://www.viva64.com/en/b/0629/ — rksimon / detail - Avoid "checking a pointer after dereferencing" warning. NFCI.
Reported in https://www.viva64.com/en/b/0629/ — rksimon / detail - Move if() to newline to stop ambiguity over whether it should be else if. NFCI.
Reported in https://www.viva64.com/en/b/0629/ — rksimon / detail - Fix operator precedence warning. NFCI.
Reported in https://www.viva64.com/en/b/0629/ — rksimon / detail - Remove superfluous break from switch statement. NFCI.
Reported in https://www.viva64.com/en/b/0629/ — rksimon / detail - [llvm-extract] Expose the group extraction feature of the BlockExtractor
This patch extends the `-bb` option to be able to use the group
extraction feature from the BlockExtractor.
In particular, `-bb=func:bb` is modified to support a list of basic
blocks per function: `-bb=func:bb1[;bb2...]` that will be extracted
together if at all possible (region must be single entry.)
Differential Revision: https://reviews.llvm.org/D60973 — qcolombet / detail - [BlockExtractor] Expose a constructor for the group extraction
NFC
Differential Revision: https://reviews.llvm.org/D60971 — qcolombet / detail - [BlockExtractor] Change the basic block separator from ',' to ';'
This change aims at making the file format be compatible with the
way LLVM handles command line options.
Differential Revision: https://reviews.llvm.org/D60970 — qcolombet / detail - Add AVX support to this test.
Requested by Craig Topper and Andrew Kaylor as part of D55897. — kpn / detail - [X86] Remove duplicate string comparison
Fix typo introduced in rL332824 where we simplified the extact string matches for "avx512.mask.permvar.sf.256" and "avx512.mask.permvar.si.256" to a string startswith test for "avx512.mask.permvar." — rksimon / detail - [AArch64][SVE] Asm: add aliases for unpredicated bitwise logical instructions
This patch adds aliases for element sizes .B/.H/.S to the
AND/ORR/EOR/BIC bitwise logical instructions. The assembler now accepts
these instructions with all element sizes up to 64-bit (.D). The
preferred disassembly is .D. — c-rhodes / detail - [X86][SSE] Add scalar horizontal add/sub tests for non-0/1 element extractions — rksimon / detail
- FileCheck [2/12]: Stricter parsing of -D option
Summary:
This patch is part of a patch series to add support for FileCheck
numeric expressions. This specific patch gives earlier and better
diagnostics for the -D option.
Prior to this change, parsing of -D option was very loose: it assumed
that there is an equal sign (which to be fair is now checked by the
FileCheck executable) and that the part on the left of the equal sign
was a valid variable name. This commit adds logic to ensure that this
is the case and gives diagnostic when it is not, making it clear that
the issue came from a command-line option error. This is achieved by
sharing the variable parsing code into a new function ParseVariable.
Copyright:
- Linaro (changes up to diff 183612 of revision D55940)
- GraphCore (changes in later versions of revision D55940 and
in new revision created off D55940)
Reviewers: jhenderson, chandlerc, jdenny, probinson, grimar, arichardson, rnk
Subscribers: hiraditya, llvm-commits, probinson, dblaikie, grimar, arichardson, tra, rnk, kristina, hfinkel, rogfer01, JonChesterfield
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60382 — thopre / detail - [LoopSimplifyCFG] Suppress expensive DomTree verification
This patch makes verification level lower for builds with
inexpensive checks.
Differential Revision: https://reviews.llvm.org/D61055 — yrouban / detail - [yaml2obj] - Simplify and reduce the code. NFC.
This inlines 2 single line static methods
and simplifies the code.
It is also possible to remove the `Is64Bit`
variable since it is used only once,
but I am not sure it will be better for readability. — grimar / detail - [yaml2obj] - Replace a loop with write_zeros(). NFCI.
This looks better. — grimar / detail - [yaml2obj] - Cleanup and simplify the code. NFCI.
The current code has the following problems:
`initSymtabSectionHeader` and `initStrtabSectionHeader` method
names saying us they are going to initialize the section headers.
Though for a few cases sh_flags field is initialized outside of them.
It does not look clean. This patch moves initialization of the
sh_flags inside these methods.
Also, it removes an excessive variable, what together with the above
change hopefully makes the code a bit more readable. — grimar / detail - [X86][SSE] Moved haddps test from phaddsub.ll to haddsub.ll (D61245)
Also merged duplicate PR39921 + PR39936 tests — rksimon / detail - [InstCombine][X86] Add PACKSS tests for truncation of sign-extended comparisons — rksimon / detail
- [ARM] Add bitcast/extract_subvec. of fp16 vectors
Summary:
This patch adds some basic operations for fp16
vectors, such as bitcast from fp16 to i16,
required to perform extract_subvector (also added
here) and extract_element.
Reviewers: SjoerdMeijer, DavidSpickett, t.p.northover, ostannard
Reviewed By: ostannard
Subscribers: javed.absar, kristof.beyls, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60618 — dnsampaio / detail - [ARM] Add v4f16 and v8f16 types to the CallingConv
Summary:
The Procedure Call Standard for the Arm Architecture
states that float16x4_t and float16x8_t behave just
as uint16x4_t and uint16x8_t for argument passing.
This patch adds the fp16 vectors to the
ARMCallingConv.td file.
Reviewers: miyuki, ostannard
Reviewed By: ostannard
Subscribers: ostannard, javed.absar, kristof.beyls, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60720 — dnsampaio / detail - vs integration: Use llvm-lib for librarian
This uses llvm-lib.exe for the librarian instead of Visual Studio
provided lib.exe. Without this it is not possible to create static
libraries with -flto using the plugin.
Original patch by Steven Noonan
This fixes: PR41147
Differential Revision: https://reviews.llvm.org/D61193 — russell_gallop / detail - gn: Fix check-clang build after r359179 — hans / detail
- Try to use /proc on FreeBSD for getExecutablePath
Currently, clang's libTooling passes this function a fake argv0, which
means that no libTooling tools can find the standard headers on FreeBSD.
With this change, these will now work on any FreeBSD systems that have
procfs mounted. This isn't the right fix for the libTooling issue, but
it does bring the FreeBSD implementation of getExecutablePath closer to
the Linux and macOS implementations. — theraven / detail - [DebugInfo] Terminate more location-list ranges at the end of blocks
This patch fixes PR40795, where constant-valued variable locations can
"leak" into blocks placed at higher addresses. The root of this is that
DbgEntityHistoryCalculator terminates all register variable locations at
the end of each block, but not constant-value variable locations.
Fixing this requires constant-valued DBG_VALUE instructions to be
broadcast into all blocks where the variable location remains valid, as
documented in the LiveDebugValues section of SourceLevelDebugging.rst,
and correct termination in DbgEntityHistoryCalculator.
Differential Revision: https://reviews.llvm.org/D59431 — jmorse / detail - [DWARF] Fix dump of local/foreign TU lists in .debug_names
Differential Revision: https://reviews.llvm.org/D61241 — maskray / detail - [DWARF] Delete a redundant check in getFileNameByIndex() — maskray / detail
- [X86] Remove some intel syntax aliases on (v)cvtpd2(u)dq, (v)cvtpd2ps, (v)cvt(u)qq2ps. Add 'x' and'y' suffix aliases to masked version of the same in att syntax.
The 128/256 bit version of these instructions require an 'x' or 'y' suffix to
disambiguate the memory form in att syntax.
We were allowing the same suffix in intel syntax, but it appears gas does not
do that.
gas does allow the 'x' and 'y' suffix on register and broadcast forms even
though its not needed. We were allowing it on unmasked register form, but not on
masked versions or on masked or unmasked broadcast form.
While there fix some test coverage holes so they can be extended with the 'x'
and 'y' suffix tests. — ctopper / detail - [llvm-nm] -print-size => --print-size — maskray / detail
- [llvm-nm] Simplify and fix a buffer overflow
* char SymbolAddrStr[18] can't hold "%" PRIo64 which may need 22 characters.
* Use range-based for
* Delete unnecessary typedef
* format(...).print(Str, sizeof(Str)) + outs() << Str => outs() << format(...)
* Use cascading outs() << .. << ..
* Use iterator_range(Container &&c)
* (A & B) == B => A & B if B is a power of 2
* replace null sentinel in constants with makeArrayRef — maskray / detail - llvm-cvtres: Attempt to make llvm-cvtres/duplicate.test work on big-endian systems — nico / detail
- [X86] Add PR39921 HADD pairwise reduction test and AVX2 test coverage — rksimon / detail
- [X86][AVX] Add fast-hops target for add/fadd reduction tests — rksimon / detail
- [X86] Add PR39936 HADD Tests — rksimon / detail
- [X86][SSE] combineExtractVectorElt - add early-out to return zero/undef for out-of-range extraction indices. — rksimon / detail
- [ConstantRange] Add makeExactNoWrapRegion()
I got confused on the terminology, and the change in D60598 was not
correct. I was thinking of "exact" in terms of the result being
non-approximate. However, the relevant distinction here is whether
the result is
* Largest range such that:
Forall Y in Other: Forall X in Result: X BinOp Y does not wrap.
(makeGuaranteedNoWrapRegion)
* Smallest range such that:
Forall Y in Other: Forall X not in Result: X BinOp Y wraps.
(A hypothetical makeAllowedNoWrapRegion)
* Both. (makeExactNoWrapRegion)
I'm adding a separate makeExactNoWrapRegion method accepting a
single APInt (same as makeExactICmpRegion) and using it in the
places where the guarantee is relevant.
Differential Revision: https://reviews.llvm.org/D60960 — nikic / detail - [X86][AVX] Enabled AVX512F tests and add PR40815 test case — rksimon / detail
- [X86][AVX] Combine non-lane crossing binary shuffles using X86ISD::VPERMV3
Some of the combines might be further improved if we lower more shuffles with X86ISD::VPERMV3 directly, instead of waiting to combine the results. — rksimon / detail - [SelectionDAG] include FP min/max variants as binary operators
The x86 test diffs don't look great because of extra move ops,
but FP min/max should clearly be included in the list. — spatel / detail - [DAGCombiner] try repeated fdiv divisor transform before building estimate
This was originally part of D61028, but it's an independent diff.
If we try the repeated divisor reciprocal transform before producing an estimate sequence,
then we have an opportunity to use scalar fdiv. On x86, the trade-off is 1 divss vs. 5
vector FP ops in the default estimate sequence. On recent chips (Skylake, Ryzen), the
full-precision division is only 3 cycle throughput, so that's probably the better perf
default option and avoids problems from x86's inaccurate estimates.
The last 2 tests show that users still have the option to override the defaults by using
the function attributes for reciprocal estimates, but those patterns are potentially made
faster by converting the vector ops (including ymm ops) to scalar math.
Differential Revision: https://reviews.llvm.org/D61149 — spatel / detail - [MCA] Fix typo in AVX2 gather tests. NFC — adibiagio / detail
- [X86][SSE] Optimize llvm.experimental.vector.reduce.xor.vXi1 parity reduction (PR38840)
An xor reduction of a bool vector can be optimized to a parity check of the MOVMSK/BITCAST'd integer - if the population count is odd return 1, else return 0.
Differential Revision: https://reviews.llvm.org/D61230 — rksimon / detail - [X86][AVX] Add AVX512DQ coverage for masked memory ops tests (PR34584) — rksimon / detail
- [X86] Remove (V)MOV64toSDrr/m and (V)MOVDI2SSrr/m. Use 128-bit result MOVD/MOVQ and COPY_TO_REGCLASS instead
Summary:
The register form of these instructions are CodeGenOnly instructions that cover
GR32->FR32 and GR64->FR64 bitcasts. There is a similar set of instructions for
the opposite bitcast. Due to the patterns using bitcasts these instructions get
marked as "bitcast" machine instructions as well. The peephole pass is able to
look through these as well as other copies to try to avoid register bank copies.
Because FR32/FR64/VR128 are all coalescable to each other we can end up in a
situation where a GR32->FR32->VR128->FR64->GR64 sequence can be reduced to
GR32->GR64 which the copyPhysReg code can't handle.
To prevent this, this patch removes one set of the 'bitcast' instructions. So
now we can only go GR32->VR128->FR32 or GR64->VR128->FR64. The instruction that
converts from GR32/GR64->VR128 has no special significance to the peephole pass
and won't be looked through.
I guess the other option would be to add support to copyPhysReg to just promote
the GR32->GR64 to a GR64->GR64 copy. The upper bits were basically undefined
anyway. But removing the CodeGenOnly instruction in favor of one that won't be
optimized seemed safer.
I deleted the peephole test because it couldn't be made to work with the bitcast
instructions removed.
The load version of the instructions were unnecessary as the pattern that selects
them contains a bitcasted load which should never happen.
Fixes PR41619.
Reviewers: RKSimon, spatel
Reviewed By: RKSimon
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61223 — ctopper / detail - Revert rL359389: [X86][SSE] Add support for <64 x i1> bool reduction
Minor generalization of the existing <32 x i1> pre-AVX2 split code.
........
Causing irregular buildbot failures. — rksimon / detail - [X86][AVX] Add additional SSE/AVX expandload and compressstore targets — rksimon / detail
- [X86][SSE] Add support for <64 x i1> bool reduction
Minor generalization of the existing <32 x i1> pre-AVX2 split code. — rksimon / detail - [X86][AVX] Cleanup and add additional expandload and compressstore tests
sort order by types and add vXi32/vXi16/vXi8 test coverage — rksimon / detail - [X86][AVX512] Improve vector bool reductions
As predicate masks are legal on AVX512 targets, we avoid MOVMSK in these cases, but we can just bitcast the bool vector to the integer equivalent directly - avoiding expansion of the reduction to a shuffle pattern. — rksimon / detail - [X86] Add vector boolean reduction tests (PR38840)
AND/OR/XOR tests for the @llvm.experimental.vector.reduce intrinsics
AND/OR are pretty good (pre-AVX512), XOR (not so common but used for parity reduction) is still pretty bad. — rksimon / detail - [lli] Fix a typo in a cl::opt description.
Patch by Wasiher. Thanks Wasiher!
Differential Revision: https://reviews.llvm.org/D61135 — Lang Hames / detail - [llvm-nm][llvm-readelf] Avoid single-dash -long-option in tests — maskray / detail
- Fix check-prefixes typo — rksimon / detail
- [DJB] Fix variable case after D61178 — maskray / detail
- [llvm-nm] Support section type 'u': STB_GNU_UNIQUE — maskray / detail
- [X86][SSE] Add initial test case for subvector insert/extract of illegal types
Suggested by @nikic on D59188 — rksimon / detail - [X86][AVX] Merge mask select with shuffles across extract_subvector (PR40332)
Fixes PR40332 in the limited case where we're selecting between a target shuffle and a zero vector.
We can extend this in the future to handle more opcodes and non-zero selections. — rksimon / detail - [MCA] Add field `IsEliminated` to class Instruction. NFCI — adibiagio / detail
- [cmake] Disable a GCC optimization when building LLVM for MIPS
GCC when compiling LLVM for MIPS can introduce a jump to an uninitialized
value when shrink wrapping is enabled. As shrink wrapping is enabled in
GCC at all optimization levels, it must be disabled. This bug exists for
all versions of GCC since 4.9.2.
This partially resolves PR37701 / GCC PR target/86069.
Patch by Simon Dardis.
Differential Revision: https://reviews.llvm.org/D48069 — atanasyan / detail - [X86] Use MOVQ for i64 atomic_stores when SSE2 is enabled
Summary: If we have SSE2 we can use a MOVQ to store 64-bits and avoid falling back to a cmpxchg8b loop. If its a seq_cst store we need to insert an mfence after the store.
Reviewers: spatel, RKSimon, reames, jfb, efriedma
Reviewed By: RKSimon
Subscribers: hiraditya, dexonsmith, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60546 — ctopper / detail - Revert "AMDGPU: Split block for si_end_cf"
This reverts commit 7a6ef3004655dd86d722199c471ae78c28e31bb4.
We discovered some internal test failures, so reverting for now.
Differential Revision: https://reviews.llvm.org/D61213 — msearles / detail - [AMDGPU] gfx1010 VOPC implementation
Differential Revision: https://reviews.llvm.org/D61208 — rampitec / detail - [ORC] Add a 'plugin' interface to ObjectLinkingLayer for events/configuration.
ObjectLinkingLayer::Plugin provides event notifications when objects are loaded,
emitted, and removed. It also provides a modifyPassConfig callback that allows
plugins to modify the JITLink pass configuration.
This patch moves eh-frame registration into its own plugin, and teaches
llvm-jitlink to only add that plugin when performing execution runs on
non-Windows platforms. This should allow us to re-enable the test case that was
removed in r359198. — Lang Hames / detail - [GlobalISel][AArch64] Use getConstantVRegValWithLookThrough for extracts
getConstantVRegValWithLookThrough does the same thing as the
getConstantValueForReg function, and has more visibility across GISel. Plus, it
supports looking through G_TRUNC, G_SEXT, and G_ZEXT. So, we get better code
reuse and more functionality for free by using it.
Add some test cases to select-extract-vector-elt.mir to show that we can now
look through those instructions. — paquette / detail - [AsmPrinter] refactor to support %c w/ GlobalAddress'
Summary:
Targets like ARM, MSP430, PPC, and SystemZ have complex behavior when
printing the address of a MachineOperand::MO_GlobalAddress. Move that
handling into a new overriden method in each base class. A virtual
method was added to the base class for handling the generic case.
Refactors a few subclasses to support the target independent %a, %c, and
%n.
The patch also contains small cleanups for AVRAsmPrinter and
SystemZAsmPrinter.
It seems that NVPTXTargetLowering is possibly missing some logic to
transform GlobalAddressSDNodes for
TargetLowering::LowerAsmOperandForConstraint to handle with "i" extended
inline assembly asm constraints.
Fixes:
- https://bugs.llvm.org/show_bug.cgi?id=41402
- https://github.com/ClangBuiltLinux/linux/issues/449
Reviewers: echristo, void
Reviewed By: void
Subscribers: void, craig.topper, jholewinski, dschuff, jyknight, dylanmckay, sdardis, nemanjai, javed.absar, sbc100, jgravelle-google, eraman, kristof.beyls, hiraditya, aheejin, kbarton, fedor.sergeev, jrtc27, atanasyan, jsji, llvm-commits, kees, tpimh, nathanchance, peter.smith, srhines
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60887 — nickdesaulniers / detail - [X86][AVX] Fold extract_subvector(broadcast(x)) -> broadcast(x) iff x has one use — rksimon / detail
- [AArch64][GlobalISel] Select G_BSWAP for vectors of s32 and s64
There are instructions for these, so mark them as legal. Select the correct
instruction in AArch64InstructionSelector.cpp.
Update select-bswap.mir and arm64-rev.ll to reflect the changes. — paquette / detail - [AMDGPU] gfx1010 VOP3 and VOP3P implementation
Differential Revision: https://reviews.llvm.org/D61202 — rampitec / detail - [DAGCombine] Cleanup visitEXTRACT_SUBVECTOR. NFCI.
Use ArrayRef::slice, reduce some rather awkward long lines for legibility and run clang-format. — rksimon / detail - [ConstantRange] Add abs() support
Add support for abs() to ConstantRange. This will allow to handle
SPF_ABS select flavor in LVI and will also come in handy as a
primitive for the srem implementation.
The implementation is slightly tricky, because a) abs of signed min
is signed min and b) sign-wrapped ranges may have an abs() that is
smaller than a full range, so we need to explicitly handle them.
Differential Revision: https://reviews.llvm.org/D61084 — nikic / detail - [X86] Sink NoRegister creation for unused Base/Index registers into getAddressOperands. NFCI — ctopper / detail
- [X86] Segment registers should have i16 type not i32.
Probably doesn't really matter, but was inconsistent with the rest of the code. — ctopper / detail - [AMDGPU] gfx1010 VOP2 changes
Differential Revision: https://reviews.llvm.org/D61156 — rampitec / detail - [llvm-nm] Revert inadvertently committed 'i' change in r359314 — maskray / detail
- [ThinLTO] Fix X86/strong_non_prevailing.ll after llvm-nm 'r' change — maskray / detail
- [PowerPC] Update P9 vector costs for insert/extract element
The PPC vector cost model values for insert/extract element reflect older
processors that lacked vector insert/extract and move-to/move-from VSR
instructions. Update getVectorInstrCost to give appropriate values for when
the newer instructions are present.
Differential Revision: https://reviews.llvm.org/D60160 — froese / detail - [llvm-nm] Generalize symbol types 'N', 'n' and '?' — maskray / detail
- [llvm-nm] Fix handling of symbol types 't' 'd' 'r'
In addition, fix and convert the two tests to yaml2obj based. This
allows us to delete two executables.
X86/weak.test: 'v' was not tested
X86/init-fini.test: symbol types of __bss_start _edata _end were wrong
GNU nm reports __init_array_start as 't', and __preinit_array_start as 'd'.
__init_array_start is 't' just because its section ".init_array" starts with ".init"
'd' makes more sense and allows us to drop the weird SHT_INIT_ARRAY rule.
So, change __init_array_start to 'd' instead. — maskray / detail - [docs] Put DefaultOption bullet in alphabetical order. — dhinton / detail
- [llvm-nm][llvm-size] Use --double-dash options in tests — maskray / detail
- s/Dwarf 5/DWARF v5/ NFC — maskray / detail
- [x86] add tests for fmin/fmax; NFC
'maximum' and 'minimum' still crash, so they are commented out. — spatel / detail - Fix llvm-objcopy/ELF/preserve-segment-contents test on UTF-8 locale
Differential Revision: https://reviews.llvm.org/D61137 — aganea / detail - [yaml2obj] - Make implicitSectionNames() return std::vector<StringRef>. NFCI.
No need to use SmallVector of char* here.
This simplifies the code. — grimar / detail - [yaml2obj] - Remove excessive variable. NFC.
`auto &Strtab` was used only once. — grimar / detail - Fix Wparentheses warning. NFCI. — rksimon / detail
- [yaml2obj] - Make the code to match the LLVM style. NFCI.
This renames the variables to uppercase and
removes use of `auto` for unobvious type. — grimar / detail - [yaml2elf] - Cleanup the initSectionHeaders(). NFCI.
This encapsulates the section specific code inside the
corresponding writeSectionContent methods.
Making the code a bit more consistent. — grimar / detail - [X86][SSE] Pull out OR(EXTRACTELT(X,0),OR(EXTRACTELT(X,1),...)) matching code from LowerVectorAllZeroTest
Create a matchBitOpReduction helper that checks for the pattern with any opcode.
First step towards reusing this code to recognize other scalar reduction patterns. — rksimon / detail - Minor formatting tweak, no behavior change — nico / detail
- caseFoldingDjbHash: simplify and make the US-ASCII fast path faster
The slow path (with at least one non US-ASCII) will be slower but that
doesn't matter.
Differential Revision: https://reviews.llvm.org/D61178 — maskray / detail - [X86][SSE] Disable shouldFoldConstantShiftPairToMask for btver1/btver2 targets (PR40758)
As detailed on PR40758, Bobcat/Jaguar can perform vector immediate shifts on the same pipes as vector ANDs with the same latency - so it doesn't make sense to replace a shl+lshr with a shift+and pair as it requires an additional mask (with the extra constant pool, loading and register pressure costs).
Differential Revision: https://reviews.llvm.org/D61068 — rksimon / detail - [X86][AVX] Combine shuffles extracted from a common vector
A small step towards combining shuffles across vector sizes - this recognizes when a shuffle's operands are all extracted from the same larger source and tries to combine to an unary shuffle of that source instead. Fixes one of the test cases from PR34380.
Differential Revision: https://reviews.llvm.org/D60512 — rksimon / detail - [InferAddressSpaces] Add AS parameter to the pass factory
This enables the pass to be used in the absence of
TargetTransformInfo. When the argument isn't passed, the factory
defaults to UninitializedAddressSpace and the flat address space is
obtained from the TargetTransformInfo as before this change. Existing
users won't have to change.
Patch by Kevin Petit.
Differential Revision: https://reviews.llvm.org/D60602 — svenvh / detail - Fix alignment in AArch64InstructionSelector::emitConstantPoolEntry()
The code was using the alignment of a pointer to the value, not the
alignment of the constant itself.
Maybe we got away with it so far because the pointer alignment is
fairly high, but we did end up under-aligning <16 x i8> vectors,
which was caught in the Chromium build after lld stopped over-aligning
the .rodata.cst16 section in r356428. (See crbug.com/953815)
Differential revision: https://reviews.llvm.org/D61124 — hans / detail - [GlobalISel] Fix inserting copies in the right position for reg definitions
When constrainRegClass is called if the constraining happens on a use the COPY
needs to be inserted before the instruction that contains the MachineOperand,
but if we are constraining a definition it actually needs to be added
after the instruction. In addition, the COPY needs to have its operands
flipped (in the use case we are copying from the old unconstrained register
to the new constrained register, while in the definition case we are copying
from the new constrained register that the instruction defines to the old
unconstrained register). — mggm / detail - Fix typos: (re)?sor?uce -> (re)?source
Closes: https://github.com/llvm/llvm-project/pull/10
In-collaboration-with: Olivier Cochard-Labbé <olivier@FreeBSD.org>
Signed-off-by: Enji Cooper <yaneurabeya@gmail.com>
Differential Revision: https://reviews.llvm.org/D61021 — maskray / detail - [NFC] Add baseline tests for int isKnownNonZero
Add baseline tests for improvements of isKnownNonZero for integer types.
Differential Revision: https://reviews.llvm.org/D60932 — dlrobertson / detail - [llvm-objcopy] Accept --long-option but not -long-option
Summary:
llvm-{objcopy,strip} (and many other LLVM binary utilities) accept
cl::opt style -long-option as well as many short options (e.g. -p -S
-x). People who use them as replacement of GNU binutils often use the
grouped option syntax (POSIX Utility Conventions), e.g. -Sx => -S -x,
-Wd => -W -d, -sj.text => -s -j.text
There is ambiguity if a long option starts with the character used by a
short option. Drop the support for -long-option to resolve the ambiguity.
This divergence from other utilities is accepted (other utilities
continue supporting -long-option).
https://lists.llvm.org/pipermail/llvm-dev/2019-April/131786.html
Reviewers: alexshap, jakehehrlich, jhenderson, rupprecht, espindola
Reviewed By: jakehehrlich, jhenderson, rupprecht
Subscribers: grimar, emaste, arichardson, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60439 — maskray / detail - [GlobalOpt] Swap the expensive check for cold calls with the cheap TTI check
isValidCandidateForColdCC is much more expensive than
TTI.useColdCCForColdCall, which by default just returns false. Avoid
doing this work if we're not going to look at the answer anyway.
This change is NFC, but I see significant compile time improvements on
some code with pathologically many functions. — Justin Bogner / detail - [ORC] Remove symbols from dependency lists when failing materialization.
When failing materialization of a symbol X, remove X from the dependants list
of any of X's dependencies. This ensures that when X's dependencies are
emitted (or fail themselves) they do not try to access the no-longer-existing
MaterializationInfo for X. — Lang Hames / detail - [CUDA] Implemented _[bi]mma* builtins.
These builtins provide access to the new integer and
sub-integer variants of MMA (matrix multiply-accumulate) instructions
provided by CUDA-10.x on sm_75 (AKA Turing) GPUs.
Also added a feature for PTX 6.4. While Clang/LLVM does not generate
any PTX instructions that need it, we still need to pass it through to
ptxas in order to be able to compile code that uses the new 'mma'
instruction as inline assembly (e.g used by NVIDIA's CUTLASS library
https://github.com/NVIDIA/cutlass/blob/master/cutlass/arch/mma.h#L101)
Differential Revision: https://reviews.llvm.org/D60279 — tra / detail - PTX 6.3 extends `wmma` instruction to support s8/u8/s4/u4/b1 -> s32.
All of the new instructions are still handled mostly by tablegen. I've slightly
refactored the code to drive intrinsic/instruction generation from a master
list of supported variants, so all irregularities have to be implemented in one place only.
The test generation script wmma.py has been refactored in a similar way.
Differential Revision: https://reviews.llvm.org/D60015 — tra / detail - [NVPTX] generate correct MMA instruction mnemonics with PTX63+.
PTX 6.3 requires using ".aligned" in the MMA instruction names.
In order to generate correct name, now we pass current
PTX version to each instruction as an extra constant operand
and InstPrinter adjusts its output accordingly.
Differential Revision: https://reviews.llvm.org/D59393 — tra / detail - [NVPTX] Refactor generation of MMA intrinsics and instructions. NFC.
Generalized constructions of 'fragments' of MMA operations to provide
common primitives for construction of the ops. This will make it easier
to add new variants of the instructions that operate on integer types.
Use nested foreach loops which makes it possible to better control
naming of the intrinsics.
This patch does not affect LLVM's output, so there are no test changes.
Differential Revision: https://reviews.llvm.org/D59389 — tra / detail - [Object][XCOFF] Add intial support for section header table.
Adds a representation of the section header table to XCOFFObjectFile,
and implements enough to dump the section headers with llvm-obdump.
Differential Revision: https://reviews.llvm.org/D60784 — sfertile / detail - [CMake][PowerPC] Recognize LLVM_NATIVE_TARGET="ppc64le" as PowerPC
Summary:
This value is derived from the host triple, which on the machine
I'm currently using is `ppc64le-linux-redhat`. This change makes
LLVM compile.
Reviewers: nemanjai
Differential Revision: https://reviews.llvm.org/D57118 — kfischer / detail - [AMDGPU] gfx1010 - fix ubsan failure
Revert DecoderNamespace in one place for now. It will need more
changes to properly work. — rampitec / detail - [x86] add tests for vector fdiv reciprocal estimate; NFC — spatel / detail
- Assigning to a local object in a return statement prevents copy elision. NFC.
I added a diagnostic along the lines of `-Wpessimizing-move` to detect `return x = y` suppressing copy elision, but I don't know if the diagnostic is really worth it. Anyway, here are the places where my diagnostic reported that copy elision would have been possible if not for the assignment.
P1155R1 in the post-San-Diego WG21 (C++ committee) mailing discusses whether WG21 should fix this pitfall by just changing the core language to permit copy elision in cases like these.
(Kona update: The bulk of P1155 is proceeding to CWG review, but specifically *not* the parts that explored the notion of permitting copy-elision in these specific cases.)
Reviewed By: dblaikie
Author: Arthur O'Dwyer
Differential Revision: https://reviews.llvm.org/D54885 — dblaikie / detail - [GlobalISel][AArch64] Make G_EXTRACT_VECTOR_ELT legal for v8s16s
This case was missing before, so we couldn't legalize it.
Add it to AArch64LegalizerInfo.cpp and update select-extract-vector-elt.mir. — paquette / detail - [ObjC][ARC] Let ARC optimizer bail out if the number of pointer states
it keeps track of becomes too large
ARC optimizer does a top-down and a bottom-up traversal of the whole
function to pair up retain and release instructions and remove them.
This can be expensive if the number of instructions in the function and
pointer states it tracks are large since it has to look at each pointer
state and determine whether the instruction being visited can
potentially use the pointer.
This patch adds a command line option that sets a limit to the number of
pointers it tracks.
rdar://problem/49477063
Differential Revision: https://reviews.llvm.org/D61100 — ahatanak / detail - [AMDGPU] gfx1010 VOP1 instructions
Differential Revision: https://reviews.llvm.org/D61099 — rampitec / detail - [AMDGPU] gfx1010 utility functions
Differential Revision: https://reviews.llvm.org/D61094 — rampitec / detail - [GlobalISel][AArch64] Add generic legalization rule for extends
This adds a legalization rule for G_ZEXT, G_ANYEXT, and G_SEXT which allows
extends whenever the types will fit in registers (or the source is an s1).
Update tests. Add GISel checks throughout all of arm64-vabs.ll,
where we now select a good portion of the code. Add GISel checks to
arm64-subvector-extend.ll, which has a good number of vector extends in it.
Differential Revision: https://reviews.llvm.org/D60889 — paquette / detail - [SelectionDAG][X86] Use stack load/store in PromoteIntRes_BITCAST when the input needs to be be split and the output type is a vector.
We had special case handling here, but it uses a scalar any_extend for the
promotion then bitcasts to the final type. This won't split up the input data
into multiple promoted elements like we need.
This patch falls back to doing the conversion through memory.
Fixes PR41594 which I believe was reflected in the bitcast-vector-bool.ll
changes. The changes to vector-half-conversions.ll are fixing a previously
unknown miscompile from this issue.
Differential Revision: https://reviews.llvm.org/D61114 — ctopper / detail - [Evaluator] Walk initial elements when handling load through bitcast
When evaluating a store through a bitcast, the evaluator tries to move the
bitcast from the pointer onto the stored value. If the cast is invalid, it
tries to "introspect" the type to get a valid cast by obtaining a pointer to
the initial element (if the type is nested, this may require walking several
initial elements).
In some situations it is possible to get a bitcast on a load (e.g. with
unions, where the bitcast may not be the same type as the store). However,
equivalent logic to the store to introspect the type is missing. This patch
add this logic.
Note, when developing the patch I was unhappy with adding similar logic
directly to the load case as it could get out of step. Instead, I have
abstracted the "introspection" into a helper function, with the specifics
being handled by a passed-in lambda function.
Differential Revision: https://reviews.llvm.org/D60793 — rlougher / detail - [GlobalISel][AArch64] Legalize G_FNEARBYINT
Add legalizer support for G_FNEARBYINT. It's the same as G_FCEIL etc.
Since the importer allows us to automatically select this after legalization,
also add tests for selection etc. Also update arm64-vfloatintrinsics.ll. — paquette / detail - [GlobalISel] Add IRTranslator support for G_FNEARBYINT
Translate llvm.nearbyint into G_FNEARBYINT as a simple intrinsic. Update
arm64-irtranslator.ll.
Differential Revision: https://reviews.llvm.org/D60922 — paquette / detail - [GlobalISel] Add a G_FNEARBYINT opcode
For eventually selecting llvm.nearbyint. Equivalent to the SelectionDAG
nearbyint node.
Update legalizer-info-validation.mir.
Differential Revision: https://reviews.llvm.org/D60921 — paquette / detail - Revert "[JITLink] Make the JITLink MachO/x86-64 eh-frame test work on Windows."
This reverts r359169, as it broke one of the windows bots. — Lang Hames / detail - gn build: Document llvm_enable_dia_sdk variable better — nico / detail
- gn build: Make setting llvm_enable_dia_sdk=true work
If this is set, %INCLUDE% must contain ".../DIA SDK/include"
and %LIB% must contain ".../DIA SKD/lib/amd64" (assuming you're doing a
64-bit build). — nico / detail - [InstCombine][X86] Tweak generic expansion of PACKSS/PACKUS to shuffle then truncate. NFCI.
This has no effect on constant folding but will be useful when we expand non-saturating PACKSS/PACKUS intrinsics. — rksimon / detail - [Support] json::OStream::flush(), which passes through to the underlying stream — sammccall / detail
- gn build: Merge r359179 — nico / detail
- gn build: Merge r359174 — nico / detail
- gn build: Merge r359142 — nico / detail
- [Support] Add JSON streaming output API, faster where the heavy value types aren't needed.
Summary:
There's still a little bit of constant factor that could be trimmed (e.g.
more overloads to avoid round-tripping primitives through json::Value).
But this solves the memory scaling problem, and greatly improves the performance
constant factor, and the API should leave room for optimization if needed.
Adapt TimeProfiler to use it, eliminating almost all the performance regression
from r358476.
Performance test on my machine:
perf stat -r 5 ~/llvmbuild-opt/bin/clang++ -w -S -ftime-trace -mllvm -time-trace-granularity=0 spirit.cpp
Handcrafted JSON (HEAD=r358532 with r358476 reverted): 2480ms
json::Value (HEAD): 2757ms (+11%)
After this patch: 2520 ms (+1.6%)
Reviewers: anton-afanasyev, lebedev.ri
Subscribers: kristina, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60804 — sammccall / detail - [InstCombine][X86] Add PACKSS/PACKUS tests for truncation where saturation won't occur — rksimon / detail
- [Support] Try to unbreak windows buildbot
After r359179. — ibiryukov / detail - Parallel: only allow the first TaskGroup to run tasks parallelly
Summary:
Concurrent (e.g. nested) llvm::parallel::for_each() may lead to dead
locks. See PR35788 (fixed by rLLD322041) and PR41508 (fixed by D60757).
When parallel_for_each() is about to return, in ~Latch() called by
~TaskGroup(), a thread (in the default executor) may block in
Latch::sync() waiting for Count to become zero. If all threads in the
default executor are blocked, it is a dead lock.
To fix this, force serial execution if the current TaskGroup is not the
first one. For a nested llvm::parallel::for_each(), this parallelizes
the outermost loop and serializes inner loops.
Differential Revision: https://reviews.llvm.org/D61115 — maskray / detail - [llvm-objdump] Prep for adding newlines before and after "Disassembly of section ...:" — maskray / detail
- [ConstantRange] [a, b) udiv a full range is [0, umax(b)).
Reviewers: nikic, spatel, efriedma
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D60536 — fhahn / detail - [Testing] Move clangd::Annotations to llvm testing support
Summary:
Annotations allow writing nice-looking unit test code when one needs
access to locations from the source code, e.g. running code completion
at particular offsets in a file. See comments in Annotations.cpp for
more details on the API.
Also got rid of a duplicate annotations parsing code in clang's code
complete tests.
Reviewers: gribozavr, sammccall
Reviewed By: gribozavr
Subscribers: mgorny, hiraditya, ioeric, MaskRay, jkorous, arphaman, kadircet, jdoerfert, cfe-commits, llvm-commits
Tags: #clang, #llvm
Differential Revision: https://reviews.llvm.org/D59814 — ibiryukov / detail - [yaml2obj] - Don't crash on invalid inputs.
yaml2obj might crash on invalid input when unable to parse the YAML.
Recently a crash with a very similar nature was fixed for an empty files.
This patch revisits the fix and does it in yaml::Input instead.
It seems to be more correct way to handle such situation.
With that crash for invalid inputs is also fixed now.
Differential revision: https://reviews.llvm.org/D61059 — grimar / detail - Fix include order. NFCI. — rksimon / detail
- [X86][SSE] combineBitcastvxi1 - add support for bitcasting to non-scalar integers
Truncate the movmsk scalar integer result to the equivalent scalar integer width as before but then bitcast to the requested type.
We still have the issue identified in PR41594 but D61114 should handle this. — rksimon / detail - [Support] Add a GTest matcher for Optional<T>
Reviewers: sammccall
Reviewed By: sammccall
Subscribers: mgorny, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61071 — ibiryukov / detail - [NFC][LoopIdiomRecognize] Some basic baseline tests for bcmp loop idiom
Doubt this is the final test coverage, but this appears to have good
coverage already, so i figure i might as well precommit it. — lebedevri / detail - [MIPS] Use custom bitcast lowering to avoid excessive instructions
On Mips32r2 bitcast can be expanded to two sw instructions and an ldc1
when using bitcast i64 to double or an sdc1 and two lw instructions when
using bitcast double to i64. By introducing custom lowering that uses
mtc1/mthc1 we can avoid excessive instructions.
Patch by Mirko Brkusanin.
Differential Revision: https://reviews.llvm.org/D61069 — atanasyan / detail - [X86] Remove part of an if condition that should always be true.
The IndexReg will always be non-null at this point. Earlier in the function, if
IndexReg was null we set it to CurDAG->getRegister(0, VT) which made it
non-null. — ctopper / detail - [JITLink] Make the JITLink MachO/x86-64 eh-frame test work on Windows.
This should fix the MachO/x86-64 eh-frame regression test by ensuring that
the symbols __ZTIi and ___gxx_personality_v0 are defined on all platforms. — Lang Hames / detail - [llvm-rtdyld] Add support for passing command line arguments to rtdyld-run code.
The --args option can now be used to pass arguments to code linked with
llvm-rtdyld. E.g.
$ llvm-rtdyld file1.o file2.o --args a b c
is equivalent to:
$ ld -o program file1.o file2.o
$ ./program a b c
This is the rtdyld counterpart to the jitlink change in r359115, and makes
benchmarking and comparison between the tools easier. — Lang Hames / detail - Enable LoopVectorization by default.
Summary:
When refactoring vectorization flags, vectorization was disabled by default in the new pass manager.
This patch re-enables is for both managers, and changes the assumptions opt makes, based on the new defaults.
Comments in opt.cpp should clarify the intended use of all flags to enable/disable vectorization.
Reviewers: chandlerc, jgorbe
Subscribers: jlebar, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61091 — asbirlea / detail - [llvm-objdump] errorToErrorCode+message -> toString
For test/Object/elf-invalid-phdr.test, the intended error message got lost due to errorToErrorCode(). — maskray / detail - Consolidate existing utilities for interpreting vector predicate maskes [NFC] — reames / detail
- Fix unused variable warning in LoopFusion pass.
Do not wrap the contents of printFusionCandidates in the LLVM_DEBUG macro. This
fixes an unused variable warning generated when compiling without asserts but
with -DENABLE_LLVM_DUMP.
Differential Revision: https://reviews.llvm.org/D61035 — kbarton / detail - [InstCombine] Be consistent w/handling of masked intrinsics style wise [NFC] — reames / detail
- [utils] Add a lldb data formatter for llvm::SmallString.
Result:
(lldb) p val
(llvm::SmallString<32>) $31 = "patatino" — davide / detail - Fix spelling error. NFC
Summary: Test commit.
Reviewers: msearles, jkorous
Reviewed By: jkorous
Subscribers: dexonsmith, arsenm, jvesely, nhaehnle, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61093 — kerbowa / detail - llvm-cvtres: Make new dupe resource error a bit friendlier
For well-known type IDs, include the name of the type.
To not duplicate the ID->name map, make llvm-readobj call this new
function as well. It has slightly different output, so this also
requires updating a few tests.
Differential Revision: https://reviews.llvm.org/D61086 — nico / detail - posix_spawn should retry upon EINTR
Summary:
We've seen cases of bots failing with:
clang: error: unable to execute command: posix_spawn failed: Interrupted system call
Add a small retry loop to posix_spawn in case this happens. Don't retry too much in case there's some systemic problem going on, but retry a few times.
<rdar://problem/50181448>
Reviewers: Bigcheese, arphaman
Subscribers: jkorous, dexonsmith, kristina, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61096 — jfb / detail - Mark new jitlink test XFAIL for windows — rnk / detail
- Recommitting r358783 and r358786 "[MS] Emit S_HEAPALLOCSITE debug info" with fixes for buildbot error (undefined assembler label).
Summary:
This emits labels around heapallocsite calls and S_HEAPALLOCSITE debug
info in codeview. Currently only changes FastISel, so emitting labels still
needs to be implemented in SelectionDAG.
Reviewers: rnk
Subscribers: aprantl, hiraditya, cfe-commits, llvm-commits
Tags: #clang, #llvm
Differential Revision: https://reviews.llvm.org/D61083 — akhuang / detail - [DAGCombiner] scale repeated FP divisor by splat factor
If we have a vector FP division with a splatted divisor, use the existing transform
that converts 'x/y' into 'x * (1.0/y)' to allow more conversions. This can then
potentially be converted into a scalar FP division by existing combines (rL358984)
as seen in the tests here.
That can be a potentially big perf difference if scalar fdiv has better timing
(including avoiding possible frequency throttling for vector ops).
Differential Revision: https://reviews.llvm.org/D61028 — spatel / detail - [PowerPC] Allow using initial-exec TLS with PIC
Using initial-exec TLS variables is a reasonable performance
optimisation for system libraries. Use the correct PIC mechanism to get
hold of the GOT to avoid text relocations.
Differential Revision: https://reviews.llvm.org/D61026 — joerg / detail - Add period at end of comment. — sfertile / detail
- [X86] Attempt to fix use-after-poison from r359121. — ctopper / detail
- [AMDGPU] gfx1010 SOP instructions
Differential Revision: https://reviews.llvm.org/D61080 — rampitec / detail - [SLP] Fix crash after r358519, by V. Porpodas.
Summary: The code did not check if operand was undef before casting it to Instruction.
Reviewers: RKSimon, ABataev, dtemirbulatov
Reviewed By: ABataev
Subscribers: uabelho
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61024 — abataev / detail - Try once more to ensure constant initializaton of ManagedStatics
First, use the old style of linker initialization for MSVC 2019 in
addition to 2017. MSVC 2019 emits a dynamic initializer for
ManagedStatic when compiled in debug mode, and according to zturner,
also sometimes in release mode. I wasn't able to reproduce that, but it
seems best to stick with the old code that works.
When clang is using the MSVC STL, we have to give ManagedStatic a
constexpr constructor that fully zero initializes all fields, otherwise
it emits a dynamic initializer. The MSVC STL implementation of
std::atomic has a non-trivial (but constexpr) default constructor that
zero initializes the atomic value. Because one of the fields has a
non-trivial constructor, ManagedStatic ends up with a non-trivial ctor.
The ctor is not constexpr, so clang ends up emitting a dynamic
initializer, even though it simply does zero initialization. To make it
constexpr, we must initialize all fields of the ManagedStatic.
However, while the constructor that takes a pointer is marked constexpr,
clang says it does not evaluate to a constant because it contains a cast
from a pointer to an integer. I filed this as:
https://developercommunity.visualstudio.com/content/problem/545566/stdatomic-value-constructor-is-not-actually-conste.html
Once we do that, we can add back the
LLVM_REQUIRE_CONSTANT_INITIALIZATION marker, and so far as I'm aware it
compiles successfully on all supported targets. — rnk / detail - Add optional arg to profile count getters to filter
synthetic profile count.
Differential Revision: http://reviews.llvm.org/D61025 — davidxl / detail - [X86] Prevent folding a load into an AND if that AND is really a ZEXT_INREG that should use movzx.
This can save a 32-bit immediate move.
We would shrink the load and fold it if it was non-volatile, but that's trickier to check for. — ctopper / detail - llvm-cvtres: Remove a default argument. No behavior change. — nico / detail
- Revert using fcopyfile(3) to implement sys::fs::copy_file(Twine, int) on macOS
It turns out that I mesread the man page and fcopyfile(3) does not
actually support COPYFILE_CLONE for files.
<rdar://problem/50148757> — Adrian Prantl / detail - DebugInfo: Emit only declarations (not whole definitions) of non-unit user defined types into type units
While this doesn't come up in reasonable cases currently (the only user
defined types not in type units are ones without linkage - which makes
for near-ODR violations, because it'd be a type with linkage referencing
a type without linkage - such a type can't be validly defined in more
than one TU, so arguably it shouldn't be in a type unit to begin with -
but it's a convenient way to demonstrate an issue that will become more
revalent with homed modular debug info type definitions - which also
don't need to be in type units but more legitimately so).
Precursor to the Clang change to de-type-unit (by omitting the
'identifier') types homed due to strong linkage vtables. (making that
change without this one would lead to major type duplication in type
units) — dblaikie / detail - [X86] Remove dead nodes left after ReplaceAllUsesWith calls during address matching
ReplaceAllUsesWith doesn't remove the node that was replaced. So its left around in the graph messing up use counts on other nodes.
One thing to note, is that this isn't valid if the node being deleted is the root node of an LEA match that gets rejected. In that case the node needs to stay alive because the isel table walking code would still have a reference to it that its going to try to match next. I don't think that's the case here though because the nodes being deleted here should be "and", "srl", and "zero_extend" none of which can be the root node of an LEA match.
Differential Revision: https://reviews.llvm.org/D61048 — ctopper / detail - [AMDGPU] gfx1010 sgpr register changes
Differential Revision: https://reviews.llvm.org/D61045 — rampitec / detail - [X86][SSE] Add tests for bitcasting vXi1 bool vectors to non-simple types. — rksimon / detail
- [JITLink] Add support for passing arguments to jit-linked code.
The --args option can now be used to pass arguments to code linked with
llvm-jitlink. E.g.
$ llvm-jitlink file1.o file2.o --args a b c
is equivalent to:
$ ld -o program file1.o file2.o
$ ./program a b c — Lang Hames / detail - [LLVM-C] Deprecate the LLVMValueRef-returning metadata creation functions
Summary: There is still some value in using these functions while the remaining LLVMValueRef-based accessors are still around, but LLVMMDNodeInContext in particular has some wonky semantics that make it worth replacing outright.
Reviewers: whitequark, deadalnix
Reviewed By: whitequark
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60524 — codafi / detail - [AMDGPU] Add gfx1010 target definitions
Differential Revision: https://reviews.llvm.org/D61041 — rampitec / detail - [InstCombine][X86] Use generic expansion of PACKSS/PACKUS for constant folding. NFCI.
This patch rewrites the existing PACKSS/PACKUS constant folding code to expand as a generic expansion.
This is a first NFCI step toward expanding PACKSS/PACKUS intrinsics which are acting as non-saturating truncations (although technically the expansion could be used in all cases - but we'll probably want to be conservative). — rksimon / detail - Revert "[llvm-objdump] errorToErrorCode+message -> toString"
Revert r359100
It breaks llvm/test/Object/elf-invalid-phdr.test — jfb / detail - llvm-undname: Fix assert-on->4GiB-string-literal, found by oss-fuzz — nico / detail
- [JITLink] Refer to FDE's CIE (not the most recent CIE) when parsing eh-frame.
Frame Descriptor Entries (FDEs) have a pointer back to a Common Information
Entry (CIE) that describes how the rest FDE should be parsed. JITLink had been
assuming that FDEs always referred to the most recent CIE encountered, but the
spec allows them to point back to any previously encountered CIE. This patch
fixes JITLink to look up the correct CIE for the FDE.
The testcase is a MachO binary with an FDE that refers to a CIE that is not the
one immediately proceeding it (the layout can be viewed wit
'dwarfdump --eh-frame <testcase>'. This test case had to be a binary as llvm-mc
now sorts FDEs (as of r356216) to ensure FDEs *do* point to the most recent CIE. — Lang Hames / detail - [llvm-objdump] Delete redundant check — maskray / detail
- [obj2yamp] - Simplify and cleanup the code in ELFDumper<ELFT>::dumpGroup a bit. NFC.
This makes the variables naming to match LLVM style,
simplifies the code used to extract the group members,
simplifies the loop and reorders the code around a bit. — grimar / detail - [llvm-objdump] errorToErrorCode+message -> toString — maskray / detail
- [AMDGPU][MC] Parser cleanup and refactoring
Reviewers: artem.tamazov, arsenm
Differential Revision: https://reviews.llvm.org/D60767 — dpreobra / detail - [x86] make sure horizontal op and broadcast types match to simplify (PR41414)
If the types don't match, we can't just remove the shuffle.
There may be some other opportunity for optimization here,
but this should prevent the crashing seen in:
https://bugs.llvm.org/show_bug.cgi?id=41414 — spatel / detail - [LLVM-C] Use dyn_cast instead of unwrap in LLVMGetDebugLoc functions
Summary:
The `unwrap<Type>` calls can assert with:
```
Assertion failed: (isa<X>(Val) && "cast<Ty>() argument of incompatible type!"), function cast
```
so replace them with `dyn_cast`.
Reviewers: whitequark, abdulras, hiraditya, compnerd
Reviewed By: whitequark
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60473 — whitequark / detail - [yaml2obj] Replace num_zeros with write_zeros — maskray / detail
- [yaml2elf] - Replace a loop with write_zeros(). NFC.
And apply clang-format to the method changed. — grimar / detail - [X86] Add shouldFoldConstantShiftPairToMask override placeholder. NFCI.
Prep work toward fixing PR40758 — rksimon / detail - Let llvm-cvtres (and lld-link) report duplicate resources
If two .res files contain the same resource, cvtres.exe (and hence
link.exe) reject the input with this message:
CVTRES : fatal error CVT1100: duplicate resource. type:STRING, name:101, language:0x0409
LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
llvm-cvtres (and lld-link) used to silently pick one of the duplicate
resources instead. This patch makes them report an error as well.
We slightly improve on cvtres by printing the name of two .res files
containing duplicate entries as well.
Differential Revision: https://reviews.llvm.org/D61049 — nico / detail - [X86][SSE] Add masked bit test cases for PR26697 — rksimon / detail
- Add "const" in GetUnderlyingObjects. NFC
Summary:
Both the input Value pointer and the returned Value
pointers in GetUnderlyingObjects are now declared as
const.
It turned out that all current (in-tree) uses of
GetUnderlyingObjects were trivial to update, being
satisfied with have those Value pointers declared
as const. Actually, in the past several of the users
had to use const_cast, just because of ValueTracking
not providing a version of GetUnderlyingObjects with
"const" Value pointers. With this patch we get rid
of those const casts.
Reviewers: hfinkel, materi, jkorous
Reviewed By: jkorous
Subscribers: dexonsmith, jkorous, jholewinski, sdardis, eraman, hiraditya, jrtc27, atanasyan, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61038 — bjope / detail - [Mips][CodeGen] Remove MachineFunction::setSubtarget. Change Mips to just copy the subtarget from the MachineFunction instead of recalculating it.
Summary:
The MachineFunction should have been created with the correct subtarget. As
long as there is no way to change it, MipsTargetMachine can just capture it
directly from the MachineFunction without calling getSubtargetImpl again.
While there, const correct the Subtarget pointer to avoid a const_cast.
I believe the Mips16Subtarget and NoMips16Subtarget members are never used, but
I'll leave there removal for a separate patch.
Reviewers: echristo, atanasyan
Reviewed By: atanasyan
Subscribers: sdardis, arichardson, hiraditya, jrtc27, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60936 — ctopper / detail - [CommandLine] Provide parser<unsigned long> instantiation to allow cl::opt<uint64_t> on LP64 platforms
Summary:
And migrate opt<unsigned long long> to opt<uint64_t>
Fixes PR19665
Differential Revision: https://reviews.llvm.org/D60933 — maskray / detail - llvm-cvtres: Accept /? as help flag, like cvtres.exe — nico / detail
- gn build: Merge r359050 more — nico / detail
- gn build: Merge r359050 — nico / detail
- Revert [AliasAnalysis] AAResults preserves AAManager.
Triggers use-after-free. — asbirlea / detail - [Remarks] Fix documentation indentation
Fix the documentation bot:
http://lab.llvm.org:8011/builders/llvm-sphinx-docs/builds/30450/steps/docs-llvm-html/logs/stdio — thegameg / detail - [Remarks] Add string deduplication using a string table
* Add support for uniquing strings in the remark streamer and emitting the string table in the remarks section.
* Add parsing support for the string table in the RemarkParser.
From this remark:
```
--- !Missed
Pass: inline
Name: NoDefinition
DebugLoc: { File: 'test-suite/SingleSource/UnitTests/2002-04-17-PrintfChar.c',
Line: 7, Column: 3 }
Function: printArgsNoRet
Args:
- Callee: printf
- String: ' will not be inlined into '
- Caller: printArgsNoRet
DebugLoc: { File: 'test-suite/SingleSource/UnitTests/2002-04-17-PrintfChar.c',
Line: 6, Column: 0 }
- String: ' because its definition is unavailable'
...
```
to:
```
--- !Missed
Pass: 0
Name: 1
DebugLoc: { File: 3, Line: 7, Column: 3 }
Function: 2
Args:
- Callee: 4
- String: 5
- Caller: 2
DebugLoc: { File: 3, Line: 6, Column: 0 }
- String: 6
...
```
And the string table in the .remarks/__remarks section containing:
```
inline\0NoDefinition\0printArgsNoRet\0
test-suite/SingleSource/UnitTests/2002-04-17-PrintfChar.c\0printf\0
will not be inlined into \0 because its definition is unavailable\0
```
This is mostly supposed to be used for testing purposes, but it gives us
a 2x reduction in the remark size, and is an incremental change for the
updates to the remarks file format.
Differential Revision: https://reviews.llvm.org/D60227 — thegameg / detail - [Lint] Permit aliasing noalias readonly arguments
Summary:
If two arguments are both readonly, then they have no memory dependency
that would violate noalias, even if they do actually overlap.
Reviewers: hfinkel, efriedma
Reviewed By: efriedma
Subscribers: efriedma, hiraditya, llvm-commits, tstellar
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60239 — cuviper / detail - [AArch64][GlobalISel] Select G_INTRINSIC_ROUND
Add selection support for G_INTRINSIC_ROUND, add a selection test, and add
check lines to arm64-vfloatintrinsics.ll and f16-instructions.ll. — paquette / detail - [AArch64][GlobalISel] Mark G_INTRINSIC_ROUND as a pre-isel floating point opcode
Add G_INTRINSIC_ROUND to isPreISelGenericFloatingPointOpcode to ensure that its
input and output are assigned the correct register bank.
Add a regbankselect test to verify that we get what we expect here. — paquette / detail - The error message for mismatched value sites is very cryptic.
Make it more readable for an average user.
Differential Revision: https://reviews.llvm.org/D60896 — dmikulin / detail - [CMake] Use add_dependencies in add_llvm_install_targets
Summary:
The CMake documentation says that the `DEPENDS` field of
add_custom_target is for files and output of custom commands. Adding a
dependency on a target should be done with `add_dependency`.
Differential Revision: https://reviews.llvm.org/D60879 — xiaobai / detail - [CGP] Look through bitcasts when duplicating returns for tail calls
The simple case of:
```
int *callee();
void *caller(void *a) {
if (a == NULL)
return callee();
return a;
}
```
would generate a regular call instead of a tail call because we don't
look through the bitcast of the call to `callee` when duplicating the
return blocks.
Differential Revision: https://reviews.llvm.org/D60837 — thegameg / detail - [X86] Add codegen prepare test exercising a bitcast + tail call
In preparation of https://reviews.llvm.org/D60837, add this test where
we don't perform a tail call because we don't look through a bitcast. — thegameg / detail - [WebAssembly] Emit br_table for most switch instructions
Summary:
Always convert switches to br_tables unless there is only one case,
which is equivalent to a simple branch. This reduces code size for wasm,
and we defer possible jump table optimizations to the VM.
Addresses PR41502.
Reviewers: kripken, sunfish
Subscribers: dschuff, sbc100, jgravelle-google, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60966 — aheejin / detail - [WebAssembly] Make LBB markers not affected by test order
Summary:
This way we can change the order of tests or delete some of them without
affecting tests for other functions.
Reviewers: tlively
Subscribers: sunfish, dschuff, sbc100, jgravelle-google, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60929 — aheejin / detail - Revert "[MS] Emit S_HEAPALLOCSITE debug info" because of ToTWin64(db)
buildbot failure.
This reverts commit d07d6d617713bececf57f3547434dd52f0f13f9e and
c774f687b6880484a126ed3e3d737e74c926f0ae. — akhuang / detail - [AArch64][GlobalISel] Legalize G_INTRINSIC_ROUND
Add it to the same rule as G_FCEIL etc. Add a legalizer test, and add a missing
switch case to AArch64LegalizerInfo.cpp. — paquette / detail - [MemorySSA] LCSSA preserves MemorySSA.
Summary:
Enabling MemorySSA in the old pass manager leads to MemorySSA being run
twice due to the fact that LCSSA and LoopSimplify do not preserve
MemorySSA. This is the first step to address that: target LCSSA.
LCSSA does not make any changes that invalidate MemorySSA, so it
preserves it by design. It must preserve AA as well, for this to hold.
After this patch, MemorySSA is still run twice in the old pass manager.
Step two follows: target LoopSimplify.
Subscribers: mehdi_amini, jlebar, Prazek, llvm-commits, george.burgess.iv, chandlerc
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60832 — asbirlea / detail - [X86] Autogenerate complete checks. NFC
Prep for D60993 — ctopper / detail - [AArch64][GlobalISel] Actually select G_INTRINSIC_TRUNC
Apparently FileCheck wasn't actually matching the fallback check lines in
arm64-vfloatintrinsics.ll properly. So, there were selection fallbacks for
G_INTRINSIC_TRUNC there.
Actually hook it up into AArch64InstructionSelector.cpp and write a proper
selection test.
I guess I'll figure out the FileCheck magic to make the fallback checks work
properly in arm64-vfloatintrinsics.ll. — paquette / detail - [ObjC][ARC] Check the basic block size before calling
DominatorTree::dominate.
ARC contract pass has an optimization that replaces the uses of the
argument of an ObjC runtime function call with the call result.
For example:
; Before optimization
%1 = tail call i8* @foo1()
%2 = tail call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* %1)
store i8* %1, i8** @g0, align 8
; After optimization
%1 = tail call i8* @foo1()
%2 = tail call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* %1)
store i8* %2, i8** @g0, align 8 // %1 is replaced with %2
Before replacing the argument use, DominatorTree::dominate is called to
determine whether the user instruction is dominated by the ObjC runtime
function call instruction. The call to DominatorTree::dominate can be
expensive if the two instructions belong to the same basic block and the
size of the basic block is large. This patch checks the basic block size
and just bails out if the size exceeds the limit set by command line
option "arc-contract-max-bb-size".
rdar://problem/49477063
Differential Revision: https://reviews.llvm.org/D60900 — ahatanak / detail - Reapply: "DebugInfo: Emit only one kind of accelerated access/name table""
Originally committed in r358931
Reverted in r358997
Seems this change made Apple accelerator tables miss names (because
names started respecting the CU NameTableKind GNU & assuming that
shouldn't produce accelerated names too), which is never correct (apple
accelerator tables don't have separators or CU lists - if present, they
must describe all names in all CUs).
Original Description:
Currently to opt in to debug_names in DWARFv5, the IR must contain
'nameTableKind: Default' which also enables debug_pubnames.
Instead, only allow one of {debug_names, apple_names, debug_pubnames,
debug_gnu_pubnames}.
nameTableKind: Default gives debug_names in DWARFv5 and greater,
debug_pubnames in v4 and earlier - and apple_names when tuning for lldb
on MachO.
nameTableKind: GNU always gives gnu_pubnames — dblaikie / detail - [ThinLTO] Pass down opt level to LTO backend and handle -O0 LTO in new PM
Summary:
The opt level was not being passed down to the ThinLTO backend when
invoked via clang (for distributed ThinLTO).
This exposed an issue where the new PM was asserting if the Thin or
regular LTO backend pipelines were invoked with -O0 (not a new issue,
could be provoked by invoking in-process *LTO backends via linker using
new PM and -O0). Fix this similar to the old PM where -O0 only does the
necessary lowering of type metadata (WPD and LowerTypeTest passes) and
then quits, rather than asserting.
Reviewers: xur
Subscribers: mehdi_amini, inglorion, eraman, hiraditya, steven_wu, dexonsmith, cfe-commits, llvm-commits, pcc
Tags: #clang, #llvm
Differential Revision: https://reviews.llvm.org/D61022 — tejohnson / detail - llvm-cvtres: Split addChild(ID) into two functions
Before, there was an IsData parameter. Now, there are two different
functions for data nodes and ID nodes. No behavior change, needed for a
follow-up change to make two data nodes (but not two ID nodes) with the
same ID an error.
For consistency, rename another addChild() overload to addNameChild(). — nico / detail - [AArch64][GlobalISel] Teach regbankselect about G_INTRINSIC_TRUNC
Add it to isPreISelGenericFloatingPointOpcode, and add a regbankselect test.
Update arm64-vfloatintrinsics.ll now that we can select it. — paquette / detail - [AArch64][GlobalISel] Legalize G_INTRINSIC_TRUNC
Same patch as G_FCEIL etc.
Add the missing switch case in widenScalar, add G_INTRINSIC_TRUNC to the correct
rule in AArch64LegalizerInfo.cpp, and add a test. — paquette / detail - [ConstantRange] Add urem support
Add urem support to ConstantRange, so we can handle in in LVI. This
is an approximate implementation that tries to capture the most useful
conditions: If the LHS is always strictly smaller than the RHS, then
the urem is a no-op and the result is the same as the LHS range.
Otherwise the lower bound is zero and the upper bound is
min(LHSMax, RHSMax - 1).
Differential Revision: https://reviews.llvm.org/D60952 — nikic / detail - [ConstantRangeTest] Move helper methods; NFC
Move Test(Unsigned|Signed)BinOpExhaustive() towards the top of the
file, so they're easier to reuse. — nikic / detail - [AMDGPU] Fixed addReg() in SIOptimizeExecMaskingPreRA.cpp
The second argument is flags, not subreg.
Differential Revision: https://reviews.llvm.org/D61031 — rampitec / detail - [AArch64][GlobalISel] Legalize G_FMA for more vector types
Same as G_FCEIL, G_FABS, etc. Just move it into that rule.
Add a legalizer test for G_FMA, which we didn't have before and update
arm64-vfloatintrinsics.ll. — paquette / detail - [AliasAnalysis] AAResults preserves AAManager.
Summary:
AAResults should not invalidate AAManager.
Update tests.
Reviewers: chandlerc
Subscribers: mehdi_amini, jlebar, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60914 — asbirlea / detail - [AArch64][GlobalISel] Add G_FMA to isPreISelGenericFloatingPointOpcode
Noticed an unnecessary fallback in arm64-vmul caused by this.
Also add a regbankselect test for G_FMA. — paquette / detail - [APSInt][OpenMP] Fix isNegative, etc. for unsigned types
Without this patch, APSInt inherits APInt::isNegative, which merely
checks the sign bit without regard to whether the type is actually
signed. isNonNegative and isStrictlyPositive call isNegative and so
are also affected.
This patch adjusts APSInt to override isNegative, isNonNegative, and
isStrictlyPositive with implementations that consider whether the type
is signed.
A large set of Clang OpenMP tests are affected. Without this patch,
these tests assume that `true` is not a valid argument for clauses
like `collapse`. Indeed, `true` fails APInt::isStrictlyPositive but
not APSInt::isStrictlyPositive. This patch adjusts those tests to
assume `true` should be accepted.
This patch also adds tests revealing various other similar fixes due
to APSInt::isNegative calls in Clang's ExprConstant.cpp and
SemaExpr.cpp: `++` and `--` overflow in `constexpr`, evaluated object
size based on `alloc_size`, `<<` and `>>` shift count validation, and
OpenMP array section validation.
Reviewed By: lebedev.ri, ABataev, hfinkel
Differential Revision: https://reviews.llvm.org/D59712 — jdenny / detail - [dsymutil] Put Swift interface files into a per-arch subdirectory.
This was meant to be part of the original commit r358921, but somehow
got lost.
<rdar://problem/49751748> — Adrian Prantl / detail - [x86] fix test checks for fdiv combine; NFC
Must have picked up some transient code changes when originally generating this. — spatel / detail - llvm-undname: Support demangling the spaceship operator
Also add a test for demanling the co_await operator. — nico / detail - [x86] add tests for vector fdiv with splat divisor; NFC — spatel / detail
- [dsymutil] Fix use-after-free when sys::path::append grows the buffer.
<rdar://problem/50117620> — Adrian Prantl / detail - Revert "[dsymutil] Fix use-after-free when sys::path::append grows the buffer." — Adrian Prantl / detail
- [dsymutil] Fix use-after-free when sys::path::append grows the buffer.
<rdar://problem/50117620> — Adrian Prantl / detail - [InstCombine] Convert a masked.load of a dereferenceable address to an unconditional load
If we have a masked.load from a location we know to be dereferenceable, we can simply issue a speculative unconditional load against that address. The key advantage is that it produces IR which is well understood by the optimizer. The select (cnd, load, passthrough) form produced should be pattern matchable back to hardware predication if profitable.
Differential Revision: https://reviews.llvm.org/D59703 — reames / detail - [x86] use psubus for more vsetcc lowering (PR39859)
Circling back to a leftover bit from PR39859:
https://bugs.llvm.org/show_bug.cgi?id=39859#c1
...we have this counter-intuitive (based on the test diffs) opportunity to use 'psubus'.
This appears to be the better perf option for both Haswell and Jaguar based on llvm-mca.
We already do this transform for the SETULT predicate, so this makes the code more
symmetrical too. If we have pminub/pminuw, we prefer those, so this should not affect
anything but pre-SSE4.1 subtargets.
$ cat before.s
movdqa -16(%rip), %xmm2 ## xmm2 = [32768,32768,32768,32768,32768,32768,32768,32768]
pxor %xmm0, %xmm2
pcmpgtw -32(%rip), %xmm2 ## xmm2 = [255,255,255,255,255,255,255,255]
pand %xmm2, %xmm0
pandn %xmm1, %xmm2
por %xmm2, %xmm0
$ cat after.s
movdqa -16(%rip), %xmm2 ## xmm2 = [256,256,256,256,256,256,256,256]
psubusw %xmm0, %xmm2
pxor %xmm3, %xmm3
pcmpeqw %xmm2, %xmm3
pand %xmm3, %xmm0
pandn %xmm1, %xmm3
por %xmm3, %xmm0
$ llvm-mca before.s -mcpu=haswell
Iterations: 100
Instructions: 600
Total Cycles: 909
Total uOps: 700
Dispatch Width: 4
uOps Per Cycle: 0.77
IPC: 0.66
Block RThroughput: 1.8
$ llvm-mca after.s -mcpu=haswell
Iterations: 100
Instructions: 700
Total Cycles: 409
Total uOps: 700
Dispatch Width: 4
uOps Per Cycle: 1.71
IPC: 1.71
Block RThroughput: 1.8
Differential Revision: https://reviews.llvm.org/D60838 — spatel / detail - [SPARC] Use the correct register set for the "r" asm constraint.
64bit mode must use 64bit registers, otherwise assumptions about the top
half of the registers are made. Problem found by Takeshi Nakayama in
NetBSD. — joerg / detail - Revert "DebugInfo: Emit only one kind of accelerated access/name table"
Regresses some apple_names situations - still investigating.
This reverts commit r358931. — dblaikie / detail - Use llvm::stable_sort
While touching the code, simplify if feasible. — maskray / detail - [RISCV] Support assembling %tls_{ie,gd}_pcrel_hi modifiers
This patch adds support for parsing and assembling the %tls_ie_pcrel_hi
and %tls_gd_pcrel_hi modifiers.
Differential Revision: https://reviews.llvm.org/D55342 — lewis-revill / detail - gn build: Merge r358944 — nico / detail
- [AMDGPU] Fix hidden argument metadata duplication for V3
Essentially complete a proper rebase of the V3 metadata change over
https://reviews.llvm.org/D49096.
Minimize the diff between the V2 and V3 variants of the relevant lit
tests, and clean up some trailing whitespace. — scott.linder / detail - gn build: Merge r358949 — nico / detail
- [X86] Pull out collectConcatOps helper. NFCI.
Create collectConcatOps helper that returns all the subvector ops for CONCAT_VECTORS or a INSERT_SUBVECTOR series. — rksimon / detail - ARM: disallow add/sub to sp unless Rn is also sp.
The manual says that Thumb2 add/sub instructions are only allowed to modify sp
if the first source is also sp. This is slightly different from the usual rGPR
restriction since it's context-sensitive, so implement it in C++. — Tim Northover / detail - [Docs] ReleaseNotes: fixup markup in memcmp()->bcmp() entry — lebedevri / detail
- [DAGCombiner] generalize binop-of-splats scalarization
If we only match build vectors, we can miss some patterns
that use shuffles as seen in the affected tests.
Note that the underlying calls within getSplatSourceVector()
have the potential for compile-time explosion because of
exponential recursion looking through binop opcodes, but
currently the list of supported opcodes is very limited.
Both of those problems should be addressed in follow-up
patches. — spatel / detail - AMDGPU: Fix LCSSA phi lowering in SILowerI1Copies
Summary:
When an LCSSA phi survives through instruction selection, the pass
ends up removing that phi entirely because it is dominated by the
logic that does the lanemask merging.
This then used to trigger an assertion when processing a dependent
phi instruction.
Change-Id: Id4949719f8298062fe476a25718acccc109113b6
Reviewers: llvm-commits
Subscribers: kzhuravl, jvesely, wdng, yaxunl, t-tye, tpr, dstuttard, rtaylor, arsenm
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60999 — nha / detail - [CallSite removal] move InlineCost to CallBase usage
Converting InlineCost interface and its internals into CallBase usage.
Inliners themselves are still not converted.
Reviewed By: reames
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60636 — fedor.sergeev / detail - Removing the explicit specifier from some default constructors; NFC. — aaronballman / detail
- [ARM] Update check for CBZ in Ifcvt
The check for creating CBZ in constant island pass recently obtained the
ability to search backwards to find a Cmp instruction. The code in IfCvt should
mirror this to allow more conversions to the smaller form. The common code has
been pulled out into a separate function to be shared between the two places.
Differential Revision: https://reviews.llvm.org/D60090 — dmgreen / detail - [ARM] Don't replicate instructions in Ifcvt at minsize
Ifcvt can replicate instructions as it converts them to be predicated. This
stops that from happening on thumb2 targets at minsize where an extra IT
instruction is likely needed.
Differential Revision: https://reviews.llvm.org/D60089 — dmgreen / detail - Fix MSVC "32-bit shift implicitly converted to 64 bits" warning. NFCI. — rksimon / detail
- Fix MSVC "32-bit shift implicitly converted to 64 bits" warning. NFCI. — rksimon / detail
- [DAGCombiner] Combine OR as ADD when no common bits are set
Summary:
The DAGCombiner is rewriting (canonicalizing) an ISD::ADD
with no common bits set in the operands as an ISD::OR node.
This could sometimes result in "missing out" on some
combines that normally are performed for ADD. To be more
specific this could happen if we already have rewritten an
ADD into OR, and later (after legalizations or combines)
we expose patterns that could have been optimized if we
had seen the OR as an ADD (e.g. reassociations based on ADD).
To make the DAG combiner less sensitive to if ADD or OR is
used for these "no common bits set" ADD/OR operations we
now apply most of the ADD combines also to an OR operation,
when value tracking indicates that the operands have no
common bits set.
Reviewers: spatel, RKSimon, craig.topper, kparzysz
Reviewed By: spatel
Subscribers: arsenm, rampitec, lebedev.ri, jvesely, nhaehnle, hiraditya, javed.absar, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D59758 — bjope / detail - [AArch64] Add support for MTE intrinsics
This patch provides intrinsics support for Memory Tagging Extension (MTE),
which was introduced with the Armv8.5-a architecture.
The intrinsics are described in detail in the latest
ACLE Q1 2019 documentation: https://developer.arm.com/docs/101028/latest
Reviewed by: David Spickett
Differential Revision: https://reviews.llvm.org/D60486 — javed.absar / detail - [ARM][FIX] Add missing f16.lane.vldN/vstN lowering
Summary:
Add missing D and Q lane VLDSTLane lowering
for fp16 elements.
Reviewers: efriedma, kosarev, SjoerdMeijer, ostannard
Reviewed By: efriedma
Subscribers: javed.absar, kristof.beyls, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60874 — dnsampaio / detail - [llvm-mc] - Properly set the the address align field of the compressed sections.
About the compressed sections spec says:
(https://docs.oracle.com/cd/E37838_01/html/E36783/section_compression.html)
sh_addralign fields of the section header for a compressed section
reflect the requirements of the compressed section.
Currently, llvm-mc always puts uncompressed section alignment to sh_addralign.
It is not correct. zlib styled section contains an Elfxx_Chdr header,
so we should either use 4 or 8 values depending on the target
(Uncompressed section alignment is stored in ch_addralign field of the compression header).
GNU assembler version 2.31.1 also has this issue,
but in 2.32.51 it was already fixed. This is how it was found
during debugging of the https://bugs.llvm.org/show_bug.cgi?id=40482
actually.
Differential revision: https://reviews.llvm.org/D60965 — grimar / detail - [LSR] Limit the recursion for setup cost
In some circumstances we can end up with setup costs that are very complex to
compute, even though the scevs are not very complex to create. This can also
lead to setupcosts that are calculated to be exactly -1, which LSR treats as an
invalid cost. This patch puts a limit on the recursion depth for setup cost to
prevent them taking too long.
Thanks to @reames for the report and test case.
Differential Revision: https://reviews.llvm.org/D60944 — dmgreen / detail - [WebAssembly] Bail out of fastisel earlier when computing PIC addresses
This change partially reverts https://reviews.llvm.org/D54647 in favor
of bailing out during computeAddress instead.
This catches the condition earlier and handles more cases.
Differential Revision: https://reviews.llvm.org/D60986 — sbc / detail - add Qiu Chaofan (qiucf@cn.ibm.com) to the CREDITS.txt — chaofan / detail
- Revert "Use const DebugLoc&"
This reverts r358910 (git commit 2b744665308fc8d30a3baecb4947f2bd81aa7d30)
While this patch *seems* trivial and safe and correct, it is not. The
copies are actually load bearing copies. You can observe this with MSan
or other ways of checking for use-after-destroy, but otherwise this may
result in ... difficult to debug inexplicable behavior.
I suspect the issue is that the debug location is used after the
original reference to it is removed. The metadata backing it gets
destroyed as its last references goes away, and then we reference it
later through these const references. — chandlerc / detail - [CMake] Replace the sanitizer support in runtimes build with multilib
This is a more generic solution; while the sanitizer support can be used
only for sanitizer instrumented builds, the multilib support can be used
to build other variants such as noexcept which is what we would like to use
in Fuchsia.
The name CMake target name uses the target name, same as for the regular
runtimes build and the name of the multilib, concatenated with '+'. The
libraries are installed in a subdirectory named after the multilib.
Differential Revision: https://reviews.llvm.org/D60926 — phosek / detail - Fully qualify llvm::Optional, some compilers complain otherwise. — Adrian Prantl / detail
- DebugInfo: Emit only one kind of accelerated access/name table
Currently to opt in to debug_names in DWARFv5, the IR must contain
'nameTableKind: Default' which also enables debug_pubnames.
Instead, only allow one of {debug_names, apple_names, debug_pubnames,
debug_gnu_pubnames}.
nameTableKind: Default gives debug_names in DWARFv5 and greater,
debug_pubnames in v4 and earlier - and apple_names when tuning for lldb
on MachO.
nameTableKind: GNU always gives gnu_pubnames — dblaikie / detail - [SelectionDAG] move splat util functions up from x86 lowering
This was supposed to be NFC, but the change in SDLoc
definitions causes instruction scheduling changes.
There's nothing x86-specific in this code, and it can
likely be used from DAGCombiner's simplifyVBinOp(). — spatel / detail - Try to work around compile errors with older versions of GCC. — Adrian Prantl / detail
- Relax test to check for a valid number instead of a specific number. — dyung / detail
- [AMDGPU] Fix an issue in `op_sel_hi` skipping.
Summary:
- Only apply packed literal `op_sel_hi` skipping on operands requiring
packed literals. Even an instruction is `packed`, it may have operand
requiring non-packed literal, such as `v_dot2_f32_f16`.
Reviewers: rampitec, arsenm, kzhuravl
Subscribers: jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60978 — hliao / detail - [dsymutil] Collect parseable Swift interfaces in the .dSYM bundle.
When a Swift module built with debug info imports a library without
debug info from a textual interface, the textual interface is
necessary to reconstruct types defined in the library's interface. By
recording the Swift interface files in DWARF dsymutil can collect them
and LLDB can find them.
This patch teaches dsymutil to look for DW_TAG_imported_modules and
records all references to parseable Swift ingterfrace files and copies
them to
a.out.dSYM/Contents/Resources/<Arch>/<ModuleName>.swiftinterface
<rdar://problem/49751748> — Adrian Prantl / detail - [InstCombine] Eliminate stores to constant memory
If we have a store to a piece of memory which is known constant, then we know the store must be storing back the same value. As a result, the store (or memset, or memmove) must either be down a dead path, or a noop. In either case, it is valid to simply remove the store.
The motivating case for this involves a memmove to a buffer which is constant down a path which is dynamically dead.
Note that I'm choosing to implement the less aggressive of two possible semantics here. We could simply say that the store *is undefined*, and prune the path. Consensus in the review was that the more aggressive form might be a good follow on change at a later date.
Differential Revision: https://reviews.llvm.org/D60659 — reames / detail - [Support] unflake TempFileCollisions test
Summary:
This test was added to verify that createUniqueEntity() does
not enter an infinite loop when all possible names are taken. However,
it also checked that all possible names are generated, which is flaky
(because the names are generated randomly). This change increases the
number of attempts we make to make flakes exceedingly
unlikely (3.88e-62).
Reviewers: fedor.sergeev, rsmith
Reviewed By: fedor.sergeev
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D56336 — inglorion / detail - [InstSimplify] Move masked.gather w/no active lanes handling to InstSimplify from InstCombine
In the process, use the existing masked.load combine which is slightly stronger, and handles a mix of zero and undef elements in the mask. — reames / detail - gn build: Merge r358869 — nico / detail
- Use const DebugLoc& — arsenm / detail
- AMDGPU: Skip debug instructions in assert
These are inserted after branch relaxation, and for some reason it's
decided to put them in the long branch expansion block. It's probably
not great to rely on the source block address, so this should probably
be switched to being PC relative instead of relying on the block
address — arsenm / detail - [Tests] Revise a test as requested by reviewer in D59703 — reames / detail
- [Tests] Add a negative test for masked.gather part of D59703 — reames / detail
- [IPSCCP] Add missing `AssumptionCacheTracker` dependency
Back in August, r340525 introduced a dependency on the assumption
cache tracker in the ipsccp pass, but that commit missed a call to
INITIALIZE_PASS_DEPENDENCY, which leaves the assumption cache
improperly registered if SCCP is the only thing that pulls it in. — Justin Bogner / detail - [LPM/BPI] Preserve BPI through trivial loop pass pipeline (e.g. LCSSA, LoopSimplify)
Currently, we do not expose BPI to loop passes at all. In the old pass manager, we appear to have been ignoring the fact that LCSSA and/or LoopSimplify didn't preserve BPI, and making it available to the following loop passes anyways. In the new one, it's invalidated before running any loop pass if either LCSSA or LoopSimplify actually make changes. If they don't make changes, then BPI is valid and available. So, we go ahead and teach LCSSA and LoopSimplify how to preserve BPI for consistency between old and new pass managers.
This patch avoids an invalidation between the two requires in the following trivial pass pipeline:
opt -passes="requires<branch-prob>,loop(no-op-loop),requires<branch-prob>"
(when the input file is one which requires either LCSSA or LoopSimplify to canonicalize the loops)
Differential Revision: https://reviews.llvm.org/D60790 — reames / detail - [PGO/SamplePGO][NFC] Move the function updateProfWeight from Instruction
to CallInst.
The issue was raised here: https://reviews.llvm.org/D60903#1472783
The function Instruction::updateProfWeight is only used for CallInst in
profile update. From the current interface, it is very easy to think that
the function can also be used for branch instruction. However, Branch
instruction does't need the scaling the function provides for
branch_weights and VP (value profile), in addition, scaling may introduce
inaccuracy for branch probablity.
The patch moves the function updateProfWeight from Instruction class to
CallInst to remove the confusion. The patch also changes the scaling of
branch_weights from a loop to a block because we know that ProfileData
for branch_weights of CallInst will only have two operands at most.
Differential Revision: https://reviews.llvm.org/D60911 — wmi / detail - Use llvm::stable_sort. NFC — maskray / detail
- Remove spurious semicolons; NFC. — aaronballman / detail
- AMDGPU/GlobalISel: Fix non-power-of-2 G_EXTRACT sources — arsenm / detail
- STLExtras: add stable_sort wrappers — maskray / detail
- GlobalISel: Legalize scalar G_EXTRACT sources — arsenm / detail
- llvm-undname: Fix an assert-on-invalid, found by oss-fuzz — nico / detail
- AMDGPU: Fix not checking for copy when looking at copy src
Effectively reverts r356956. The check for isFullCopy was excessive,
but there still needs to be a check that this is a copy. — arsenm / detail - [AMDGPU][MC] Corrected parsing of SP3 'neg' modifier
See bug 41156: https://bugs.llvm.org/show_bug.cgi?id=41156
Reviewers: artem.tamazov, arsenm
Differential Revision: https://reviews.llvm.org/D60624 — dpreobra / detail - [TargetLowering][AMDGPU][X86] Improve SimplifyDemandedBits bitcast handling
This patch adds support for BigBitWidth -> SmallBitWidth bitcasts, splitting the DemandedBits/Elts accordingly.
The AMDGPU backend needed an extra (srl (and x, c1 << c2), c2) -> (and (srl(x, c2), c1) combine to encourage BFE creation, I investigated putting this in DAGCombine but it caused a lot of noise on other targets - some improvements, some regressions.
The X86 changes are all definite wins.
Differential Revision: https://reviews.llvm.org/D60462 — rksimon / detail - [DAGCombiner] make variable name less ambiguous; NFC — spatel / detail
- [DAGCombiner] prepare shuffle-of-splat to handle more patterns; NFC — spatel / detail
- [LLVM-C] Add accessors to the default floating-point metadata node
Summary: Add a getter and setter pair for floating-point accuracy metadata.
Reviewers: whitequark, deadalnix
Reviewed By: whitequark
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60527 — codafi / detail - [NewPM] Add Option handling for SimpleLoopUnswitch
This patch enables passing options to SimpleLoopUnswitch via the passes pipeline.
Reviewers: chandlerc, fedor.sergeev, leonardchan, philip.pfaffe
Reviewed By: fedor.sergeev
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D60676 — skatkov / detail - [AMDGPU] Regenerate uitofp i8 to float conversion tests.
Prep work for D60462 — rksimon / detail - [NewPM] Add dummy Test for LoopVectorize option parsing. — skatkov / detail
- Revert "[ConstantRange] Rename make{Guaranteed -> Exact}NoWrapRegion() NFC"
This reverts commit 7bf4d7c07f2fac862ef34c82ad0fef6513452445.
After thinking about this more, this isn't right, the range is not exact
in the same sense as makeExactICmpRegion(). This needs a separate
function. — nikic / detail - [ConstantRange] Rename make{Guaranteed -> Exact}NoWrapRegion() NFC
Following D60632 makeGuaranteedNoWrapRegion() always returns an
exact nowrap region. Rename the function accordingly. This is in
line with the naming of makeExactICmpRegion(). — nikic / detail - [X86] Reject 512-bit types in getRegForInlineAsmConstraint when AVX512 is not enabled. Same for 256 bit and AVX. — ctopper / detail
- [JITLink] Remove a lot of reduntant 'JITLink_' prefixes. NFC. — Lang Hames / detail
- [cmake] Add llvm-jit to LLVM_TEST_DEPENDS
Otherwise llvm-jit would say "utils/lit/lit/llvm/subst.py:127: note: Did not find llvm-jitlink in ..." — maskray / detail - [JITLink] Fix section start address calculation in eh-frame recorder.
Section atoms are not sorted, so we need to scan the whole section to find the
start address.
No test case: Found by inspection, and any reproduction would depend on pointer
ordering. — Lang Hames / detail - Attemp get llvm-jitlink building on Windows
By removing an include of dlfcn.h that looks unused.
And clang-format a too-long line while here. — nico / detail - [JITLink] Add an option to dump relocated section content.
The -dump-relocated-section-content option will dump the contents of each
section after relocations are applied, and before any checks are run or
code executed. — Lang Hames / detail - gn build: Re-run `git ls-files '*.gn' '*.gni' | xargs llvm/utils/gn/gn.py format` — nico / detail
- gn build: Merge r358749
Since the symlinks list for llvm-symbolizer is now never empty,
the :symlinks target no longer needs an explicit dep on :llvm-symbolizer
-- there will be at least one dep on a symlink, and each symlink depends
on :llvm-symbolizer already.
Since llvm-symbolizer:symlinks now produces symlinks that check-llvm
uses, make llvm/test depend on the symlink target. — nico / detail - gn build: Merge r358818 (JITLink) — nico / detail
- [cmake] Fix bug in r358779 - [CMake] Pass monorepo build settings in cross compile
Escape semicolons in the targets list so that cmake doesn't expand
them to spaces. — dhinton / detail - llvm-undname: Fix hex escapes in wchar_t, char16_t, char32_t strings
llvm-undname used to put '\x' in front of every pair of nibbles, but
u"\xD7\xFF" produces a string with 6 bytes: \xD7 \0 \xFF \0 (and \0\0). Correct
for a single character (plus terminating \0) is u\xD7FF instead.
Now, wchar_t, char16_t, and char32_t strings roundtrip from source to
clang-cl (and cl.exe) and then llvm-undname.
(...at least as long as it's not a string like L"\xD7FF" L"foo" which
gets demangled as L"\xD7FFfoo", where the compiler then considers the
"f" as part of the hex escape. That seems ok.)
Also add a comment saying that the "almost-valid" char32_t string I
added in my last commit is actually produced by compilers. — nico / detail - llvm-undname: Fix stack overflow on almost-valid
If a unsigned with all 4 bytes non-0 was passed to outputHex(), there
were two off-by-ones in it:
- Both MaxPos and Pos left space for the final \0, which left the buffer
one byte to small. Set MaxPos to 16 instead of 15 to fix.
- The `assert(Pos >= 0);` was after a `Pos--`, move it up one line.
Since valid Unicode codepoints are <= 0x10ffff, this could never really
happen in practice.
Found by oss-fuzz. — nico / detail - [ConstantRange] Add saturating add/sub methods
Add support for uadd_sat and friends to ConstantRange, so we can
handle uadd.sat and friends in LVI. The implementation is forwarding
to the corresponding APInt methods with appropriate bounds.
One thing worth pointing out here is that the handling of wrapping
ranges is not maximally accurate. A simple example is that adding 0
to a wrapped range will return a full range, rather than the original
wrapped range. The tests also only check that the non-wrapping
envelope is correct and minimal.
Differential Revision: https://reviews.llvm.org/D60946 — nikic / detail - [ConstantRange] Add getNonEmpty() constructor
ConstantRanges have an annoying special case: If upper and lower are
the same, it can be either an empty or a full set. When constructing
constant ranges nearly always a full set is intended, but this still
requires an explicit check in many places.
This revision adds a getNonEmpty() constructor that disambiguates this
case: If upper and lower are the same, a full set is created.
Differential Revision: https://reviews.llvm.org/D60947 — nikic / detail - [AArch64] add tests with multiple binop+splat vals; NFC
See D60890 for context. — spatel / detail - llvm-undname: Fix stack overflow on invalid found by oss-fuzz — nico / detail
- gn build: Fix build after r358837 — nico / detail
- [ARM] Rewrite isLegalT2AddressImmediate
This does two main things, firstly adding some at least basic addressing modes
for i64 types, and secondly treats floats and doubles sensibly when there is no
fpu. The floating point change can help codesize in some cases, especially with
D60294.
Most backends seems to not consider the exact VT in isLegalAddressingMode,
instead switching on type size. That is now what this does when the target does
not have an fpu (as the float data will be loaded using LDR's). i64's currently
use the address range of an LDRD (even though they may be legalised and loaded
with an LDR). This is at least better than marking them all as illegal
addressing modes.
I have not attempted to do much with vectors yet. That will need changing once
MVE is added.
Differential Revision: https://reviews.llvm.org/D60677 — dmgreen / detail - [X86] Add the rounding control operand to the printing for some scalar FMA instructions. — ctopper / detail
- [CachePruning] Simplify comparator — maskray / detail
- [JITLink] Add dependency on MCParser to unit test after rL358818
This is required by -DBUILD_SHARED_LIBS=on builds for createMCAsmParser. — maskray / detail - [X86] Don't form masked vfpclass instruction from and+vfpclass unless the fpclass only has a single use. — ctopper / detail
- [JITLink] Remove an overly strict error check in JITLink's eh-frame parser.
The error check required FDEs to refer to the most recent CIE, but the eh-frame
spec allows them to refer to any previously seen CIE. This patch removes the
offending check. — Lang Hames / detail - [BinaryFormat] Fix bitfield-ordering of MachO::relocation_info on big-endian.
Hopefully this will fix the JITLink regression test failures on big-endian
testers (e.g.
http://lab.llvm.org:8011/builders/clang-s390x-linux-lnt/builds/12702) — Lang Hames / detail - [JITLink] Factor basic common GOT and stub creation code into its own class. — Lang Hames / detail
- [gn] Move Features.inc to clangd, create a config for it
ClangdLSPServer and clangd unittests now include Features.inc so we
need to append the target_gen_dir that contains it to their
include_dirs. To do so, we use a public config that's applied to
any target that depends on the features one.
Differential Revision: https://reviews.llvm.org/D60919 — phosek / detail - [JITLink] Add dependencies on MCDissassembler and Target to unit test. — Lang Hames / detail
- llvm-undname: Improve string literal demangling with embedded \0 chars
- Don't assert when a string looks like a u32 string to the heuristic
but doesn't have a length that's 0 mod 4. Instead, classify those
as u16 with embedded \0 chars. Found by oss-fuzz.
- Print embedded nul bytes as \0 instead of \x00. — nico / detail - ftime-trace: Trace the name of the currently active pass as well.
Differential Revision: https://reviews.llvm.org/D60782 — nico / detail - [JITLink] Add yet more detail to MachO/x86-64 unsupported relocation errors.
Knowing the address/symbolnum field values makes it easier to identify the
unsupported relocation, and provides enough information for the full bit
pattern of the relocation to be reconstructed. — Lang Hames / detail - [JITLink][ORC] Add JITLink to the list of dependencies for ORC.
The new ObjectLinkingLayer in ORC depends on JITLink.
This should fix the build error at
http://lab.llvm.org:8011/builders/clang-ppc64le-linux-multistage/builds/9621 — Lang Hames / detail - [JITLink] Fix a bad formatv format string. — Lang Hames / detail
- [JITLink] Disable MachO/x86-64 regression test if the X86 target is not built. — Lang Hames / detail
- Revert r358800. Breaks Obsequi from the test suite.
The last attempt fixed gcc and consumer-typeset, but Obsequi seems to fail with
a different issue. — Amara Emerson / detail - [JITLink] Add llvm-jitlink to the list of available tools in lit.
Should fix the 'llvm-jitlink command not found' errors that are appearing on
some builders. — Lang Hames / detail - [JITLink] Add BinaryFormat to JITLink's dependencies.
Hopefully this will fix the missing dependence on llvm::identify_magic that is
showing up on some PPC bots. E.g.
http://lab.llvm.org:8011/builders/clang-ppc64le-linux-multistage/builds/9617 — Lang Hames / detail - [JITLink] Add more detail to MachO/x86-64 "unsupported relocation" errors.
The extra information here will be helpful in diagnosing errors, like the
ones currently occuring on the PPC big-endian bots. :) — Lang Hames / detail - [JITLink] Add check to JITLink unit test to bail out for unsupported targets.
This should prevent spurious JITLink unit test failures for builds that do not
support the target(s) required by the tests. — Lang Hames / detail - [JITLink] Silence some MSVC implicit cast warnings. — Lang Hames / detail
- [JITLink] Add llvm-jitlink subdirectory to tools/LLVMBuild.txt — Lang Hames / detail
- [JITLink] Use memset instead of bzero. — Lang Hames / detail
- [JITLink] Silence a narrowing conversion warning. — Lang Hames / detail
- [JITLink] Update BuildingAJIT tutorials to account for API changes in r358818.
DynamicLibrarySearchGenerator::GetForCurrentProcess now takes a char (the global
prefix) rather than a DataLayout reference. — Lang Hames / detail - [JITLink] Fix a missing header and bad prototype. — Lang Hames / detail
- Initial implementation of JITLink - A replacement for RuntimeDyld.
Summary:
JITLink is a jit-linker that performs the same high-level task as RuntimeDyld:
it parses relocatable object files and makes their contents runnable in a target
process.
JITLink aims to improve on RuntimeDyld in several ways:
(1) A clear design intended to maximize code-sharing while minimizing coupling.
RuntimeDyld has been developed in an ad-hoc fashion for a number of years and
this had led to intermingling of code for multiple architectures (e.g. in
RuntimeDyldELF::processRelocationRef) in a way that makes the code more
difficult to read, reason about, extend. JITLink is designed to isolate
format and architecture specific code, while still sharing generic code.
(2) Support for native code models.
RuntimeDyld required the use of large code models (where calls to external
functions are made indirectly via registers) for many of platforms due to its
restrictive model for stub generation (one "stub" per symbol). JITLink allows
arbitrary mutation of the atom graph, allowing both GOT and PLT atoms to be
added naturally.
(3) Native support for asynchronous linking.
JITLink uses asynchronous calls for symbol resolution and finalization: these
callbacks are passed a continuation function that they must call to complete the
linker's work. This allows for cleaner interoperation with the new concurrent
ORC JIT APIs, while still being easily implementable in synchronous style if
asynchrony is not needed.
To maximise sharing, the design has a hierarchy of common code:
(1) Generic atom-graph data structure and algorithms (e.g. dead stripping and
| memory allocation) that are intended to be shared by all architectures.
|
+ -- (2) Shared per-format code that utilizes (1), e.g. Generic MachO to
| atom-graph parsing.
|
+ -- (3) Architecture specific code that uses (1) and (2). E.g.
JITLinkerMachO_x86_64, which adds x86-64 specific relocation
support to (2) to build and patch up the atom graph.
To support asynchronous symbol resolution and finalization, the callbacks for
these operations take continuations as arguments:
using JITLinkAsyncLookupContinuation =
std::function<void(Expected<AsyncLookupResult> LR)>;
using JITLinkAsyncLookupFunction =
std::function<void(const DenseSet<StringRef> &Symbols,
JITLinkAsyncLookupContinuation LookupContinuation)>;
using FinalizeContinuation = std::function<void(Error)>;
virtual void finalizeAsync(FinalizeContinuation OnFinalize);
In addition to its headline features, JITLink also makes other improvements:
- Dead stripping support: symbols that are not used (e.g. redundant ODR
definitions) are discarded, and take up no memory in the target process
(In contrast, RuntimeDyld supported pointer equality for weak definitions,
but the redundant definitions stayed resident in memory).
- Improved exception handling support. JITLink provides a much more extensive
eh-frame parser than RuntimeDyld, and is able to correctly fix up many
eh-frame sections that RuntimeDyld currently (silently) fails on.
- More extensive validation and error handling throughout.
This initial patch supports linking MachO/x86-64 only. Work on support for
other architectures and formats will happen in-tree.
Differential Revision: https://reviews.llvm.org/D58704 — Lang Hames / detail - [X86] Disable argument copy elision for arguments passed via pointers
Summary:
If you pass two 1024 bit vectors in IR with AVX2 on Windows 64. Both vectors will be split in four 256 bit pieces. The four pieces of the first argument will be passed indirectly using 4 gprs. The second argument will get passed via pointers in memory.
The PartOffsets stored for the second argument are all in terms of its original 1024 bit size. So the PartOffsets for each piece are 32 bytes apart. So if we consider it for copy elision we'll only load an 8 byte pointer, but we'll move the address 32 bytes. The stack object size we create for the first part is probably wrong too.
This issue was encountered by ISPC. I'm working on getting a reduce test case, but wanted to go ahead and get feedback on the fix.
Reviewers: rnk
Reviewed By: rnk
Subscribers: dbabokin, llvm-commits, hiraditya
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60801 — ctopper / detail - [CorrelatedValuePropagation] Mark subs that we know not to wrap with nuw/nsw.
Summary:
Teach CorrelatedValuePropagation to also handle sub instructions in addition to add. Relatively simple since makeGuaranteedNoWrapRegion already understood sub instructions. Only subtle change is which range is passed as "Other" to that function, since sub isn't commutative.
Note that CorrelatedValuePropagation::processAddSub is still hidden behind a default-off flag as IndVarSimplify hasn't yet been fixed to strip the added nsw/nuw flags and causes a miscompile. (PR31181)
Reviewers: sanjoy, apilipenko, nikic
Reviewed By: nikic
Subscribers: hiraditya, jfb, jdoerfert, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60036 — luqmana / detail - [ExecutionDomainFix] Optimize a binary search insertion — maskray / detail
- [llvm-symbolizer] Fix section index at the end of a section
This is very minor issue. The returned section index is only used by
DWARFDebugLine as an llvm::upper_bound input and the use case shouldn't
cause any behavioral change. — maskray / detail - [IndVarSimplify] Generate full checks for some LFTR tests; NFC — nikic / detail
- [IndVarSimplify] Add tests for PR31181; NFC — nikic / detail
- [ADT] Avoid warning in bsearch testcase — sammccall / detail
- [llvm-objdump] Fix End in disassemblyObject after rL358806 — maskray / detail
- [CVP] Add tests for sub nowrap inference; NFC
These are baseline tests for D60036.
Patch by Luqman Aden. — nikic / detail - [X86] Fix stack probing on x32 (PR41477)
Fix for https://bugs.llvm.org/show_bug.cgi?id=41477. On the x32 ABI
with stack probing a dynamic alloca will result in a WIN_ALLOCA_32
with a 32-bit size. The current implementation tries to copy it into
RAX, resulting in a physreg copy error. Fix this by copying to EAX
instead. Also fix incorrect opcodes or registers used in subs. — nikic / detail - [llvm-objdump] Don't disassemble symbols before SectionAddr
This was caught by UBSAN
tools/llvm-objdump/X86/macho-disassembly-g-dsym.test
tools/llvm-objdump/X86/hex-displacement.test — maskray / detail - [X86] Don't turn (and (shl X, C1), C2) into (shl (and X, (C1 >> C2), C2) if the original AND can represented by MOVZX.
The MOVZX doesn't require an immediate to be encoded at all. Though it does use
a 2 byte opcode so its the same size as a 1 byte immediate. But it has a
separate source and dest register so can help avoid copies. — ctopper / detail - [X86] Turn (and (anyextend (shl X, C1), C2)) into (shl (and (anyextend X), (C1 >> C2), C2) if the AND could match a movzx.
There's one slight regression in here because we don't check that the immediate
already allowed movzx before the shift. I'll fix that next. — ctopper / detail - [llvm-objdump] Simplify --{start,stop}-address — maskray / detail
- [WebAssembly] Object: Improve error messages on invalid section
Also add a test.
Differential Revision: https://reviews.llvm.org/D60836 — sbc / detail - Revert "Revert "[GlobalISel] Add legalization support for non-power-2 loads and stores""
We were shifting the wrong component of a split load when trying to combine them
back into a single value. — Amara Emerson / detail - [GlobalISel][AArch64] Legalize + select G_FRINT
Exactly the same as G_FCEIL, G_FABS, etc.
Add tests for the fp16/nofp16 behaviour, update arm64-vfloatintrinsics, etc.
Differential Revision: https://reviews.llvm.org/D60895 — paquette / detail - [WebAssembly] FastISel: Don't fallback to SelectionDAG after BuildMI in selectCall
My understanding is that once BuildMI has been called we can't fallback
to SelectionDAG.
This change moves the fallback for when getRegForValue() fails for
that target of an indirect call. This was failing in -fPIC mode when
the callee is GlobalValue.
Add a test case that tickles this.
Differential Revision: https://reviews.llvm.org/D60908 — sbc / detail - [GVN+LICM] Use line 0 locations for better crash attribution
This is a follow-up to r291037+r291258, which used null debug locations
to prevent jumpy line tables.
Using line 0 locations achieves the same effect, but works better for
crash attribution because it preserves the right inline scope.
Differential Revision: https://reviews.llvm.org/D60913 — Vedant Kumar / detail - Update GN files to build with r358103 — Vitaly Buka / detail
- Remove the EnableEarlyCSEMemSSA set of options from the legacy
and new pass managers. They were default to true and not being
used.
Differential Revision: https://reviews.llvm.org/D60747 — echristo / detail - [AArch64] Fix checks for AArch64MCExpr::VK_SABS flag.
VK_SABS is part of the SymLoc bitfield in the variant kind which should
be compared for equality, not by checking the VK_SABS bit.
As far as I know, the existing code happened to produce the correct
results in all cases, so this is just a cleanup.
Patch by Stephen Crane.
Differential Revision: https://reviews.llvm.org/D60596 — efriedma / detail - [GlobalISel] Add IRTranslator support for G_FRINT
Add it as a simple intrinsic, update arm64-irtranslator.ll.
Differential Revision: https://reviews.llvm.org/D60893 — paquette / detail - Attempt to fix buildbot failure in commit 1bb57bac959ac163fd7d8a76d734ca3e0ecee6ab. — akhuang / detail
- [GlobalISel] Add a G_FRINT opcode
Equivalent to SelectionDAG's frint node.
Differential Revision: https://reviews.llvm.org/D60891 — paquette / detail - [X86] Add test case for D60801. NFC — ctopper / detail
- [MS] Emit S_HEAPALLOCSITE debug info
Summary:
This emits labels around heapallocsite calls and S_HEAPALLOCSITE debug
info in codeview. Currently only changes FastISel, so emitting labels still
needs to be implemented in SelectionDAG.
Reviewers: hans, rnk
Subscribers: aprantl, hiraditya, cfe-commits, llvm-commits
Tags: #clang, #llvm
Differential Revision: https://reviews.llvm.org/D60800 — akhuang / detail - [CMake] Pass monorepo build settings in cross compile
This allows the cross compiled build targets to configure the LLVM tools and sub-projects that are part of the main build.
This is needed for generating native non llvm *-tablegen tools when cross compiling clang in the monorepo build environment. — cbieneman / detail - [gn] Support dots in CMake paths in the sync script
Some file paths use dots to pick up sources from parent directories.
Differential Revision: https://reviews.llvm.org/D60734 — phosek / detail - [LICM & MemorySSA] Make limit flags pass tuning options.
Summary:
Make the flags in LICM + MemorySSA tuning options in the old and new
pass managers.
Subscribers: mehdi_amini, jlebar, Prazek, george.burgess.iv, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60490 — asbirlea / detail - Revert "[GlobalISel] Add legalization support for non-power-2 loads and stores"
This introduces some runtime failures which I'll need to investigate further. — Amara Emerson / detail - [GlobalISel][AArch64] Legalize vector G_FPOW
This instruction is legalized in the same way as G_FSIN, G_FCOS, G_FLOG10, etc.
Update legalize-pow.mir and arm64-vfloatintrinsics.ll to reflect the change.
Differential Revision: https://reviews.llvm.org/D60218 — paquette / detail - [NewPassManager] Adding pass tuning options: loop vectorize.
Summary:
Trying to add the plumbing necessary to add tuning options to the new pass manager.
Testing with the flags for loop vectorize.
Reviewers: chandlerc
Subscribers: sanjoy, mehdi_amini, jlebar, steven_wu, dexonsmith, dang, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D59723 — asbirlea / detail - [dsymutil] DwarfLinker: delete unused parameter — maskray / detail
- [SelectionDAG] soften splat mask assert/unreachable (PR41535)
These are general queries, so they should not die when given
a degenerate input like an all undef mask. Callers should be
able to deal with an op that will eventually be simplified away. — spatel / detail - llvm-undname: Attempt to fix leak-on-invalid found by oss-fuzz — nico / detail
- gn build: Merge r358722 — nico / detail
- gn build: Merge r358691 — nico / detail
- [LTO] Add plumbing to save stats during LTO on Darwin.
Gold and ld on Linux already support saving stats, but the
infrastructure is missing on Darwin. Unfortunately it seems like the
configuration from lib/LTO/LTO.cpp is not used.
This patch adds a new LTOStatsFile option and adds plumbing in Clang to
use it on Darwin, similar to the way remarks are handled.
Currnetly the handling of LTO flags seems quite spread out, with a bunch
of duplication. But I am not sure if there is an easy way to improve
that?
Reviewers: anemet, tejohnson, thegameg, steven_wu
Reviewed By: steven_wu
Differential Revision: https://reviews.llvm.org/D60516 — fhahn / detail - Change \r\n -> \n for llvm-symbolizer/help.test after rL358749 — maskray / detail
- [llvm-symbolizer] Add llvm-addr2line
This adds an alias for llvm-symbolizer with different defaults so that
it can be used as a drop-in replacement for GNU's addr2line.
If a substring "addr2line" is found in the tool's name:
* it defaults "-i", "-f" and "-C" to OFF;
* it uses "--output-style=GNU" by default.
Differential Revision: https://reviews.llvm.org/D60067 — ikudrin / detail - [llvm-symbolizer] Unhide and document the "-output-style" option
With the latest changes, the option gets useful for users of
llvm-symbolizer, not only for the upcoming llvm-addr2line.
Differential Revision: https://reviews.llvm.org/D60816 — ikudrin / detail - [llvm-symbolizer] Make the output with -output-style=GNU closer to addr2line's
This patch addresses two differences in the output of llvm-symbolizer
and GNU's addr2line:
* llvm-symbolizer prints an empty line after the report for an address.
* With "-f -i=0", llvm-symbolizer replaces the name of an inlined
function with the name from the symbol table, i. e., the top caller
function in the inlining chain. addr2line preserves the name of the
inlined function.
Differential Revision: https://reviews.llvm.org/D60770 — ikudrin / detail - [AMDGPU] Regenerate extractelt->truncate test.
Prep work for D60462 — rksimon / detail - [CodeGen] Add "const" to MachineInstr::mayAlias
Summary:
The basic idea here is to make it possible to use
MachineInstr::mayAlias also when the MachineInstr
is const (or the "Other" MachineInstr is const).
The addition of const in MachineInstr::mayAlias
then rippled down to the need for adding const
in several other places, such as
TargetTransformInfo::getMemOperandWithOffset.
Reviewers: hfinkel
Reviewed By: hfinkel
Subscribers: hfinkel, MatzeB, arsenm, jvesely, nhaehnle, hiraditya, javed.absar, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60856 — bjope / detail - [PATCH] [MachineScheduler] Check pending instructions when an instruction is scheduled
Pending instructions that may have been blocked from being available by the HazardRecognizer may no longer may not be blocked any more when an instruction is scheduled; pending instructions should be re-checked in this case.
This is primarily aimed at VLIW targets with large parallelism and esoteric constraints.
No testcase as no in-tree targets have this behavior.
Differential revision: https://reviews.llvm.org/D60861 — jamesm / detail - [MergeFunc] Delete unused FunctionNode::release() — maskray / detail
- [MergeFunc] removeUsers: call remove() only on direct users
removeUsers uses a work list to collect indirect users and call remove()
on those functions. However it has a bug (`if (!Visited.insert(UU).second)`).
Actually, we don't have to collect indirect users.
After the merge of F and G, G's callers will be considered (added to
Deferred). If G's callers can be merged, G's callers' callers will be
considered.
Update the test unnamed-addr-reprocessing.ll to make it clear we can
still merge indirect callers. — maskray / detail - [AMDGPU] Ignore non-SUnits edges
Summary:
Ignore edges to non-SUnits (e.g. ExitSU) when checking
for low latency instructions.
When calling the function isLowLatencyInstruction(),
an ExitSU could be on the list of successors, not necessarily
a regular SU. In other places in the code there is a check
"Succ->NodeNum >= DAGSize" to prevent further processing of
ExitSU as "Succ->getInstr()" is NULL in such a case.
Also, 8 out of 9 cases of "SUnit *Succ = SuccDep.getSUnit())"
has the guard, so it is clearly an omission here.
Change-Id: Ica86f0327c7b2e6bcb56958e804ea6c71084663b
Reviewers: nhaehnle
Reviewed By: nhaehnle
Subscribers: MatzeB, arsenm, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, javed.absar, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60864 — Piotr Sobczak / detail - [CallSite removal] Move the legacy PM, call graph, and some inliner
code to `CallBase`.
This patch focuses on the legacy PM, call graph, and some of inliner and legacy
passes interacting with those APIs from `CallSite` to the new `CallBase` class.
No interesting changes.
Differential Revision: https://reviews.llvm.org/D60412 — chandlerc / detail - [MergeFunc] Use less_first() as the comparator of Schwartzian transform — maskray / detail
- [X86] Turn (and (shl X, C1), C2) into (shl (and X, (C1 >> C2), C2) if the AND could match a movzx.
Could get further improvements by recognizing (i64 and (anyext (i32 shl))). — ctopper / detail - [X86] Add test cases for turning (and (shl X, C1), C2) into (shl (and X, (C1 >> C2), C2) when the AND could match to a movzx.
We already reorder when C1 >> C2 would allow a smaller immediate encoding. — ctopper / detail - [X86] Make sure we copy the HandleSDNode back to N before executing the default code after the switch in matchAddressRecursively
Summary:
There are two places where we create a HandleSDNode in address matching in order to handle the case where N is changed by CSE. But if we end up not matching, we fall back to code at the bottom of the switch that really would like N to point to something that wasn't CSEd away. So we should make sure we copy the handle back to N on any paths that can reach that code.
This appears to be the true reason we needed to check DELETED_NODE in the negation matching. In pr32329.ll we had two subtracts back to back. We recursed through the first subtract, and onto the second subtract. The second subtract called matchAddressRecursively on its LHS which caused that subtract to CSE. We ultimately failed the match and ended up in the default code. But N was pointing at the old node that had been deleted, but the default code didn't know that and took it as the base register. Then we unwound back to the first subtract and tried to access this bogus base reg requiring the check for deleted node. With this patch we now use the CSE result as the base reg instead.
matchAdd has been broken since sometime in 2015 when it was pulled out of the switch into a helper function. The assignment to N at the end was still there, but N was passed by value and not by reference so the update didn't go anywhere.
Reviewers: niravd, spatel, RKSimon, bkramer
Reviewed By: niravd
Subscribers: llvm-commits, hiraditya
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60843 — ctopper / detail - [DWARF] Use hasFileAtIndex to properly verify DWARF 5 after rL358732 — maskray / detail
- [llvm] Prevent duplicate files in debug line header in dwarf 5: another attempt
Another attempt to land the changes in debug line header to prevent duplicate
files in Dwarf 5. I rolled back my previous commit because of a mistake in
generating the object file in a test. Meanwhile, I addressed some offline
comments and changed the implementation; the largest difference is that
MCDwarfLineTableHeader does not keep DwarfVersion but gets it as a parameter. I
also merged the patch to fix two lld tests that will strt to fail into this
patch.
Original Commit:
https://reviews.llvm.org/D59515
Original Message:
Motivation: In previous dwarf versions, file name indexes started from 1, and
the primary source file was not explicit. Dwarf 5 standard (6.2.4) prescribes
the primary source file to be explicitly given an entry with an index number 0.
The current implementation honors the specification by just duplicating the
main source file, once with index number 0, and later maybe with another
index number. While this is compliant with the letter of the standard, the
duplication causes problems for consumers of this information such as lldb.
(Some files are duplicated, where only some of them have a line table although
all refer to the same file)
With this change, dwarf 5 debug line section files always start from 0, and
the zeroth entry is not duplicated whenever possible. This requires different
handling of dwarf 4 and dwarf 5 during generation (e.g. when a function returns
an index zero for a file name, it signals an error in dwarf 4, but not in dwarf
5) However, I think the minor complication is worth it, because it enables all
consumers (lldb, gdb, dwarfdump, objdump, and so on) to treat all files in the
file name list homogenously. — tamur / detail - [APInt] Optimize umul_ov
Change two costly udiv() calls to lshr(1)*RHS + left-shift + plus
On one 64-bit umul_ov benchmark, I measured an obvious improvement: 12.8129s -> 3.6257s
Note, there may be some value to special case 64-bit (the most common
case) with __builtin_umulll_overflow().
Differential Revision: https://reviews.llvm.org/D60669 — maskray / detail - MergeFunc: preserve COMDAT information when creating a thunk
We would previously drop the COMDAT on the thunk we generated when replacing a
function body with the forwarding thunk. This would result in a function that
may have been multiply emitted and multiply merged to be emitted with the same
name without the COMDAT. This is a hard error with PE/COFF where the COMDAT is
used for the deduplication of Value Witness functions for Swift. — Saleem Abdulrasool / detail - [LoopUnroll] Move list of params into a struct [NFCI].
Summary: Cleanup suggested in review of r358304.
Reviewers: sanjoy, efriedma
Subscribers: jlebar, zzheng, dmgreen, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60638 — asbirlea / detail - [AArch64] add tests for mul-by-element; NFC — spatel / detail
- Implement sys::fs::copy_file using the macOS copyfile(3) API
to support APFS clones.
This patch adds a Darwin-specific implementation of
llvm::sys::fs::copy_file() that uses the macOS copyfile(3) API to
support APFS copy-on-write clones, which should be faster and much
more space efficient.
https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/APFS_Guide/ToolsandAPIs/ToolsandAPIs.html
Differential Revision: https://reviews.llvm.org/D60802
This reapplies 358628 with an additional bugfix handling the case
where the destination file already exists. (Caught by the clang testsuite). — Adrian Prantl / detail - [GlobalISel][AArch64] Legalize/select G_(S/Z/ANY)_EXT for v8s8s
This adds legalization for G_SEXT, G_ZEXT, and G_ANYEXT for v8s8s.
We were falling back on G_ZEXT in arm64-vabs.ll before, preventing us from
selecting the @llvm.aarch64.neon.sabd.v8i8 intrinsic.
This adds legalizer support for those 3, which gives us selection via the
importer. Update the relevant tests (legalize-ext.mir, select-int-ext.mir) and
add a GISel line to arm64-vabs.ll.
Differential Revision: https://reviews.llvm.org/D60881 — paquette / detail - [GlobalISel][AArch64] Legalize v8s8 loads
Add legalizer support for loads of v8s8 and update legalize-load-store.mir.
Differential Revision: https://reviews.llvm.org/D60877 — paquette / detail - llvm-undname: Fix two more asserts-on-invalid, found by oss-fuzz — nico / detail
- llvm-undname: Fix two asserts-on-invalid — nico / detail
- [GuardWidening] Wire up a NPM version of the LoopGuardWidening pass — reames / detail
- [NFC] FMF propagation for GlobalIsel — mcberg2017 / detail
- [BlockExtractor] Extend the file format to support the grouping of basic blocks
Prior to this patch, each basic block listed in the extrack-blocks-file
would be extracted to a different function.
This patch adds the support for comma separated list of basic blocks
to form group.
When the region formed by a group is not extractable, e.g., not single
entry, all the blocks of that group are left untouched.
Let us see this new format in action (comments are not part of the
file format):
;; funcName bbName[,bbName...]
foo bb1 ;; Extract bb1 in its own function
foo bb2,bb3 ;; Extract bb2,bb3 in their own function
bar bb1,bb4 ;; Extract bb1,bb4 in their own function
bar bb2 ;; Extract bb2 in its own function
Assuming all regions are extractable, this will create one function and
thus one call per region.
Differential Revision: https://reviews.llvm.org/D60746 — qcolombet / detail - [PowerPC] Add some PPC vec cost tests to prep for D60160 NFC — froese / detail
- [X86] combineVectorTruncationWithPACKUS - remove split/concatenation of mask
combineVectorTruncationWithPACKUS is currently splitting the upper bit bit masking into 128-bit subregs and then concatenating them back together.
This was originally done to avoid regressions that caused existing subregs to be concatenated to the larger type just for the AND masking before being extracted again. This was fixed by @spatel (notably rL303997 and rL347356).
This also lets SimplifyDemandedBits do some further improvements before it hits the recursive depth limit.
My only annoyance with this is that we were broadcasting some xmm masks but we seem to have lost them by moving to ymm - but that's a known issue as the logic in lowerBuildVectorAsBroadcast isn't great.
Differential Revision: https://reviews.llvm.org/D60375#inline-539623 — rksimon / detail - [LoopPred] Fix a blatantly obvious bug in r358684
The bug is that I didn't check whether the operand of the invariant_loads were themselves invariant. I don't know how this got missed in the patch and review. I even had an unreduced test case locally, and I remember handling this case, but I must have lost it in one of the rebases. Oops. — reames / detail - [x86] add tests for improved insertelement to index 0 (PR41512); NFC
Patch proposal in D60852. — spatel / detail - [CMake] Allow custom extensions for externalized debug info
Summary:
Extra flexibility for emitting debug info to external files (remains Darwin only for now).
LLDB needs this functionality to emit a LLDB.framework.dSYM instead of LLDB.dSYM when building the framework, because the latter could conflict with the driver's lldb.dSYM when emitted in the same directory on case-insensitive file systems.
Reviewers: friss, bogner, beanz
Subscribers: mgorny, aprantl, llvm-commits, #lldb
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60862 — stefan.graenitz / detail - [LoopPredication] Allow predication of loop invariant computations (within the loop)
The purpose of this patch is to eliminate a pass ordering dependence between LoopPredication and LICM. To understand the purpose, consider the following snippet of code inside some loop 'L' with IV 'i'
A = _a.length;
guard (i < A)
a = _a[i]
B = _b.length;
guard (i < B);
b = _b[i];
...
Z = _z.length;
guard (i < Z)
z = _z[i]
accum += a + b + ... + z;
Today, we need LICM to hoist the length loads, LoopPredication to make the guards loop invariant, and TrivialUnswitch to eliminate the loop invariant guard to establish must execute for the next length load. Today, if we can't prove speculation safety, we'd have to iterate these three passes 26 times to reduce this example down to the minimal form.
Using the fact that the array lengths are known to be invariant, we can short circuit this iteration. By forming the loop invariant form of all the guards at once, we remove the need for LoopPredication from the iterative cycle. At the moment, we'd still have to iterate LICM and TrivialUnswitch; we'll leave that part for later.
As a secondary benefit, this allows LoopPred to expose peeling oppurtunities in a much more obvious manner. See the udiv test changes as an example. If the udiv was not hoistable (i.e. we couldn't prove speculation safety) this would be an example where peeling becomes obviously profitable whereas it wasn't before.
A couple of subtleties in the implementation:
- SCEV's isSafeToExpand guarantees speculation safety (i.e. let's us expand at a new point). It is not a precondition for expansion if we know the SCEV corresponds to a Value which dominates the requested expansion point.
- SCEV's isLoopInvariant returns true for expressions which compute the same value across all iterations executed, regardless of where the original Value is located. (i.e. it can be in the loop) This implies we have a speculation burden to prove before expanding them outside loops.
- invariant_loads and AA->pointsToConstantMemory are two cases that SCEV currently does not handle, but meets the SCEV definition of invariance. I plan to sink this part into SCEV once this has baked for a bit.
Differential Revision: https://reviews.llvm.org/D60093 — reames / detail - [SDA] Bug fix: Use IPD outside the loop as divergence bound
Summary:
The immediate post dominator of the loop header may be part of the divergent loop.
Since this /was/ the divergence propagation bound the SDA would not detect joins of divergent paths outside the loop.
Reviewers: nhaehnle
Reviewed By: nhaehnle
Subscribers: mmasten, arsenm, jvesely, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D59042 — nha / detail - Fix a bug in SCEV's isSafeToExpand around speculation safety
isSafeToExpand was making a common, but dangerously wrong, mistake in assuming that if any instruction within a basic block executes, that all instructions within that block must execute. This can be trivially shown to be false by considering the following small example:
bb:
add x, y <-- InsertionPoint
call @throws()
udiv x, y <-- SCEV* S
br ...
It's clearly not legal to expand S above the throwing call, but the previous logic would do so since S dominates (but not properlyDominates) the block containing the InsertionPoint.
Since iterating instructions w/in a block is expensive, this change special cases two cases: 1) S is an operand of InsertionPoint, and 2) InsertionPoint is the terminator of it's block. These two together are enough to keep all current optimizations triggering while fixing the latent correctness issue.
As best I can tell, this is a silent bug in current ToT. Given that, there's no tests with this change. It was noticed in an upcoming optimization change (D60093), and was reviewed as part of that. That change will include the test which caused me to notice the issue. I'm submitting this seperately so that anyone bisecting a problem gets a clear explanation. — reames / detail - MinidumpYAML: Fix ambiguity between std::make_unique and llvm::make_unique — d0k / detail
- MinidumpYAML: Add support for ModuleList stream
Summary:
This patch adds support for yaml (de)serialization of the minidump
ModuleList stream. It's a fairly straight forward-application of the
existing patterns to the ModuleList structures defined in previous
patches.
One thing, which may be interesting to call out explicitly is the
addition of "new" allocation functions to the helper BlobAllocator
class. The reason for this was, that there was an emerging pattern of a
need to allocate space for entities, which do not have a suitable
lifetime for use with the existing allocation functions. A typical
example of that was the "size" of various lists, which is only available
as a temporary returned by the .size() method of some container. For
these cases, one can use the new set of allocation functions, which
will take a temporary object, and store it in an allocator-managed
buffer until it is written to disk.
Reviewers: amccarth, jhenderson, clayborg, zturner
Subscribers: lldb-commits, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60405 — labath / detail - gn build: Merge r358607 — nico / detail
- gn build: Merge r358633 — nico / detail
- gn build: Merge r358620 — nico / detail
- [llvm-objcopy] Add -B mips — rupprecht / detail
- [yaml2elf/obj2yaml] - Allow normal parsing/dumping of the .rela.dyn section
.rela.dyn is a section that has sh_info normally
set to zero. And Info is an optional field in the description
of the relocation section in YAML.
But currently, yaml2obj would fail to produce the object when
Info is not explicitly listed.
The patch fixes the issue.
Differential revision: https://reviews.llvm.org/D60820 — grimar / detail - [X86][SSE] Lower ICMP EQ(AND(X,C),C) -> SRA(SHL(X,LOG2(C)),BW-1) iff C is power-of-2.
This replaces the MOVMSK combine introduced at D52121/rL342326
(movmsk (setne (and X, (1 << C)), 0)) -> (movmsk (X << C))
with the more general icmp lowering so it can pick up more cases through bitcasts - notably vXi8 cases which use vXi16 shifts+masks, this patch can remove the mask and use pcmpgtb(0,x) for the sra.
Differential Revision: https://reviews.llvm.org/D60625 — rksimon / detail - [llvm-objcopy][llvm-strip] Add switch to allow removing referenced sections
llvm-objcopy currently emits an error if a section to be removed is
referenced by another section. This is a reasonable thing to do, but is
different to GNU objcopy. We should allow users who know what they are
doing to have a way to produce the invalid ELF. This change adds a new
switch --allow-broken-links to both llvm-strip and llvm-objcopy to do
precisely that. The corresponding sh_link field is then set to 0 instead
of an error being emitted.
I cannot use llvm-readelf/readobj to test the link fields because they
emit an error if any sections, like the .dynsym, cannot be properly
loaded.
Reviewed by: rupprecht, grimar
Differential Revision: https://reviews.llvm.org/D60324 — jhenderson / detail - Test commit access [NFC]
Remove a trailing space — c-rhodes / detail - [NewPM] Add Option handling for LoopVectorize
This patch enables passing options to LoopVectorizePass via the passes pipeline.
Reviewers: chandlerc, fedor.sergeev, leonardchan, philip.pfaffe
Reviewed By: fedor.sergeev
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D60681 — skatkov / detail - [PowerPC] Fix wrong ElemSIze when calling isConsecutiveLS()
Summary:
This issue from the bugzilla: https://bugs.llvm.org/show_bug.cgi?id=41177
When the two operands for BUILD_VECTOR are same, we will get assert error.
llvm::SDValue combineBVOfConsecutiveLoads(llvm::SDNode*, llvm::SelectionDAG&):
Assertion `!(InputsAreConsecutiveLoads && InputsAreReverseConsecutive) &&
"The loads cannot be both consecutive and reverse consecutive."' failed.
This error caused by the wrong ElemSIze when calling isConsecutiveLS(). We
should use `getScalarType().getStoreSize();` to get the ElemSize instread of
`getScalarSizeInBits() / 8`.
Reviewed By: jsji
Differential Revision: https://reviews.llvm.org/D60811 — zhangkang / detail - [llvm-profdata] Fix one bad format in llvm-profdata CommandGuide doc. NFC — xur / detail
- Elaborate why we have an option on by default for enabling chr. — echristo / detail
- [AMDGPU] Avoid DAG combining assert with fneg(fadd(A,0))
fneg combining attempts to turn it into fadd(fneg(A), fneg(0)), but
creating the new fadd folds to just fneg(A). When A has multiple uses,
this confuses it and you get an assert. Fixed.
Differential Revision: https://reviews.llvm.org/D60633
Change-Id: I0ddc9b7286abe78edc0cd8d734fdeb05ff09821c — tpr / detail - Fix a typo in comments. [NFC] — tamur / detail
- [GISel]:IRTranslator: Prefer a buidInstr form that allows CSE of cast instructions
https://reviews.llvm.org/D60844
Use the style of buildInstr that allows CSEing. — aditya_nandakumar / detail - Fix bad compare function over FusionCandidate.
Reverse the checking of the domiance order so that when a self compare happens,
it returns false. This makes compare function have strict weak ordering. — rtrieu / detail - Revert Implement sys::fs::copy_file using the macOS copyfile(3) API to support APFS clones.
This reverts r358628 (git commit 91a06bee788262a294527b815354f380d99dfa9b)
while investigating a crash reproducer bot failure. — Adrian Prantl / detail - Implement sys::fs::copy_file using the macOS copyfile(3) API
to support APFS clones.
This patch adds a Darwin-specific implementation of
llvm::sys::fs::copy_file() that uses the macOS copyfile(3) API to
support APFS copy-on-write clones, which should be faster and much
more space efficient.
https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/APFS_Guide/ToolsandAPIs/ToolsandAPIs.html
Differential Revision: https://reviews.llvm.org/D60802 — Adrian Prantl / detail - Fix formatting. NFC — ahatanak / detail
- [x86] try to widen 'shl' as part of LEA formation
The test file has pairs of tests that are logically equivalent:
https://rise4fun.com/Alive/2zQ
%t4 = and i8 %t1, 8
%t5 = zext i8 %t4 to i16
%sh = shl i16 %t5, 2
%t6 = add i16 %sh, %t0
=>
%t4 = and i8 %t1, 8
%sh2 = shl i8 %t4, 2
%z5 = zext i8 %sh2 to i16
%t6 = add i16 %z5, %t0
...so if we can fold the shift op into LEA in the 1st pattern, then we
should be able to do the same in the 2nd pattern (unnecessary 'movzbl'
is a separate bug I think).
We don't want to do this any sooner though because that would conflict
with generic transforms that try to narrow the width of the shift.
Differential Revision: https://reviews.llvm.org/D60789 — spatel / detail - Test commit by Denis Bakhvalov
Change-Id: I4d85123a157d957434902fb14ba50926b2d56212 — dendibakh / detail - [AsmPrinter] hoist %a output template to base class for ARM+Aarch64
Summary:
X86 is quite complicated; so I intend to leave it as is. ARM+Aarch64 do
basically the same thing (Aarch64 did not correctly handle immediates,
ARM has a test llvm/test/CodeGen/ARM/2009-04-06-AsmModifier.ll that uses
%a with an immediate) for a flag that should be target independent
anyways.
Reviewers: echristo, peter.smith
Reviewed By: echristo
Subscribers: javed.absar, eraman, kristof.beyls, hiraditya, llvm-commits, srhines
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60841 — nickdesaulniers / detail - Add a getSizeInBits() accessor to MachineMemOperand. NFC.
Cleans up a bunch of places where we do getSize() * 8.
Differential Revision: https://reviews.llvm.org/D60799 — Amara Emerson / detail - [GlobalISel] Add legalization support for non-power-2 loads and stores
Legalize things like i24 load/store by splitting them into smaller power of 2 operations.
This matches how SelectionDAG handles these operations.
Differential Revision: https://reviews.llvm.org/D59971 — Amara Emerson / detail - Add basic loop fusion pass.
This patch adds a basic loop fusion pass. It will fuse loops that conform to the
following 4 conditions:
1. Adjacent (no code between them)
2. Control flow equivalent (if one loop executes, the other loop executes)
3. Identical bounds (both loops iterate the same number of iterations)
4. No negative distance dependencies between the loop bodies.
The pass does not make any changes to the IR to create opportunities for fusion.
Instead, it checks if the necessary conditions are met and if so it fuses two
loops together.
The pass has not been added to the pass pipeline yet, and thus is not enabled by
default. It can be run stand alone using the -loop-fusion option.
Differential Revision: https://reviews.llvm.org/D55851 — kbarton / detail - [AsmPrinter] defer %c to base class for ARM, PPC, and Hexagon. NFC
Summary:
None of these derived classes do anything that the base class cannot.
If we remove these case statements, then the base class can handle them
just fine.
Reviewers: peter.smith, echristo
Reviewed By: echristo
Subscribers: nemanjai, javed.absar, eraman, kristof.beyls, hiraditya, kbarton, jsji, llvm-commits, srhines
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60803 — nickdesaulniers / detail - [ThinLTO] Fix ThinLTOCodegenerator to export llvm.used symbols
Summary:
Reapply r357931 with fixes to ThinLTO testcases and llvm-lto tool.
ThinLTOCodeGenerator currently does not preserve llvm.used symbols and
it can internalize them. In order to pass the necessary information to the
legacy ThinLTOCodeGenerator, the input to the code generator is
rewritten to be based on lto::InputFile.
Now ThinLTO using the legacy LTO API will requires data layout in
Module.
"internalize" thinlto action in llvm-lto is updated to run both
"promote" and "internalize" with the same configuration as
ThinLTOCodeGenerator. The old "promote" + "internalize" option does not
produce the same output as ThinLTOCodeGenerator.
This fixes: PR41236
rdar://problem/49293439
Reviewers: tejohnson, pcc, kromanova, dexonsmith
Reviewed By: tejohnson
Subscribers: ormris, bd1976llvm, mehdi_amini, inglorion, eraman, hiraditya, jkorous, dexonsmith, arphaman, dang, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60421 — steven_wu / detail - [InstCombine] Factor out unreachable inst idiom creation [NFC]
In InstCombine, we use an idiom of "store i1 true, i1 undef" to indicate we've found a path which we've proven unreachable. We can't actually insert the unreachable instruction since that would require changing the CFG. We leave that to simplifycfg later.
This just factors out that idiom creation so we don't duplicate the same mostly undocument idiom creation in multiple places. — reames / detail - [LVI][CVP] Constrain values in with.overflow branches
If a branch is conditional on extractvalue(op.with.overflow(%x, C), 1)
then we can constrain the value of %x inside the branch based on
makeGuaranteedNoWrapRegion(). We do this by extending the edge-value
handling in LVI. This allows CVP to then fold comparisons against %x,
as illustrated in the tests.
Differential Revision: https://reviews.llvm.org/D60650 — nikic / detail - [AMDGPU][MC] Corrected handling of "-" before expressions
See bug 41156: https://bugs.llvm.org/show_bug.cgi?id=41156
Reviewers: artem.tamazov, arsenm
Differential Revision: https://reviews.llvm.org/D60622 — dpreobra / detail - [ARM] tighten test checks; NFC — spatel / detail
- AMDGPU: Force skip over SMRD, VMEM and s_waitcnt instructions
Summary: This fixes a large Dawn of War 3 performance regression with RADV from Mesa 19.0 to master which was caused by creating less code in some branches.
Reviewers: arsen, nhaehnle
Reviewed By: nhaehnle
Subscribers: arsenm, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60824 — pendingchaos / detail - [ARM] make test checks more thorough; NFC
This will change with the proposal in D60214.
Unfortunately, the triple is not supported for auto-generation
via script, and the multiple RUN lines have diffs on this test,
but I can't tell exactly what is required by this test.
PR7162 was an assert/crash, so hopefully, this is good enough. — spatel / detail - [LoopUnroll] Allow unrolling if the unrolled size does not exceed loop size.
Summary:
In the following cases, unrolling can be beneficial, even when
optimizing for code size:
1) very low trip counts
2) potential to constant fold most instructions after fully unrolling.
We can unroll in those cases, by setting the unrolling threshold to the
loop size. This might highlight some cost modeling issues and fixing
them will have a positive impact in general.
Reviewers: vsk, efriedma, dmgreen, paquette
Reviewed By: paquette
Differential Revision: https://reviews.llvm.org/D60265 — fhahn / detail - [DAGCombine] Add SimplifyDemandedBits helper that handles demanded elts mask as well
The other SimplifyDemandedBits helpers become wrappers to this new demanded elts variant. — rksimon / detail - [Support] Add LEB128 support to BinaryStreamReader/Writer.
Summary:
This patch adds support for ULEB128 and SLEB128 encoding and decoding to
BinaryStreamWriter and BinaryStreamReader respectively.
Support for ULEB128/SLEB128 will be used for eh-frame parsing in the JITLink
library currently under development (see https://reviews.llvm.org/D58704).
Reviewers: zturner, dblaikie
Subscribers: kristina, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60810 — Lang Hames / detail - [ScheduleDAGRRList] Recompute topological ordering on demand.
Currently there is a single point in ScheduleDAGRRList, where we
actually query the topological order (besides init code). Currently we
are recomputing the order after adding a node (which does not have
predecessors) and then we add predecessors edge-by-edge.
We can avoid adding edges one-by-one after we added a new node. In that case, we can
just rebuild the order from scratch after adding the edges to the DAG
and avoid all the updates to the ordering.
Also, we can delay updating the DAG until we query the DAG, if we keep a
list of added edges. Depending on the number of updates, we can either
apply them when needed or recompute the order from scratch.
This brings down the geomean compile time for of CTMark with -O1 down 0.3% on X86,
with no regressions.
Reviewers: MatzeB, atrick, efriedma, niravd, paquette
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D60125 — fhahn / detail - [AMDGPU][MC] Corrected parsing of registers
See bug 41280: https://bugs.llvm.org/show_bug.cgi?id=41280
Reviewers: artem.tamazov, arsenm
Differential Revision: https://reviews.llvm.org/D60621 — dpreobra / detail - [AMDGPU] Flag new raw/struct atomic ops as source of divergence
Differential Revision: https://reviews.llvm.org/D60731
Change-Id: I821d93dec8b9cdd247b8172d92fb5e15340a9e7d — tpr / detail - gn build: Merge r358554 — nico / detail
- [LLVM-C] Add DIFile Field Accesssors
Summary:
Add accessors for the file, directory, source file name (curiously, an `Optional` value?), of a DIFile.
This is intended to replace the LLVMValueRef-based accessors used in D52239
Reviewers: whitequark, jberdine, deadalnix
Reviewed By: whitequark, jberdine
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60489 — codafi / detail - [CostModel][X86] Add bool anyof/allof reduction costs
On pre-AVX512 targets we can use MOVMSK to extract reduced boolean results. This is properly optimized, annoyingly AVX512 isn't and produces code that is almost as bad as the (unchanged) costs suggest......
Differential Revision: https://reviews.llvm.org/D60403 — rksimon / detail - [DWARF] llvm::Error -> Error. NFC
The unqualified name is more common and is used in the file as well. — maskray / detail - Change some llvm::{lower,upper}_bound to llvm::bsearch. NFC — maskray / detail
- [llvm-objcopy] Support full list of bfd targets that lld uses.
Summary:
This change takes the full list of bfd targets that lld supports (see `ScriptParser.cpp`), including generic handling for `*-freebsd` targets (which uses the same settings but with a FreeBSD OSABI). In particular this adds mips support for `--output-target` (but not yet via `--binary-architecture`).
lld and llvm-objcopy use their own different custom data structures, so I'd prefer to check this in as-is (add support directly in llvm-objcopy, including all the test coverage) and do a separate NFC patch(s) that consolidate the two by putting this mapping into libobject.
See [[ https://bugs.llvm.org/show_bug.cgi?id=41462 | PR41462 ]].
Reviewers: jhenderson, jakehehrlich, espindola, alexshap, arichardson
Reviewed By: arichardson
Subscribers: fedor.sergeev, emaste, sdardis, krytarowski, atanasyan, llvm-commits, MaskRay, arichardson
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60773 — rupprecht / detail - [CVP] processOverflowIntrinsic(): don't crash if constant-holding happened
As reported by Mikael Holmén in post-commit review in
https://reviews.llvm.org/D60791#1469765 — lebedevri / detail - [DWARF] Pass ReferenceToDIEOffsets elements by reference — maskray / detail
- Fixed error message printing in write_cmake_config.py
Summary:
Previously, write_cmake_config.py would raise an error while printing
the error, because `leftovers` in "'\n'.join(leftovers)" is a tuple.
Subscribers: mgorny, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60766 — gribozavr / detail - [X86] Autogenerate complete checks. NFC — ctopper / detail
- [X86] In CopyToFromAsymmetricReg, use VR128 instead of FR32 instructions for GR32<->XMM register copies.
We have two versions of some instructions, VR128 versions and FR32 versions that
are marked as CodeGenOnly.
This change switches to using the VR128 versions for these copies. It's after
register allocation so the class size no longer matters. This matches how GR64
works. — ctopper / detail - [MCA] Moved the bottleneck analysis to its own file. NFCI — adibiagio / detail
- Revert "Add basic loop fusion pass." Per request.
This reverts commit r358543/ab70da07286e618016e78247e4a24fcb84077fda. — echristo / detail - Revert "Temporarily Revert "Add basic loop fusion pass.""
The reversion apparently deleted the test/Transforms directory.
Will be re-reverting again. — echristo / detail - Remove the run-slp-after-loop-vectorization option.
It's been on by default for 4 years and cleans up the pass
hierarchy. — echristo / detail - Temporarily Revert "Add basic loop fusion pass."
As it's causing some bot failures (and per request from kbarton).
This reverts commit r358543/ab70da07286e618016e78247e4a24fcb84077fda. — echristo / detail - Add basic loop fusion pass.
This patch adds a basic loop fusion pass. It will fuse loops that conform to the
following 4 conditions:
1. Adjacent (no code between them)
2. Control flow equivalent (if one loop executes, the other loop executes)
3. Identical bounds (both loops iterate the same number of iterations)
4. No negative distance dependencies between the loop bodies.
The pass does not make any changes to the IR to create opportunities for fusion.
Instead, it checks if the necessary conditions are met and if so it fuses two
loops together.
The pass has not been added to the pass pipeline yet, and thus is not enabled by
default. It can be run stand alone using the -loop-fusion option.
Phabricator: https://reviews.llvm.org/D55851 — kbarton / detail - [ADT] llvm::bsearch, binary search for mere mortals
Summary:
Add to STLExtras a binary search function with a simple mental model:
You provide a range and a predicate which is true above a certain point.
bsearch() tells you that point.
Overloads are provided for integers, iterators, and containers.
This is more suitable than std:: alternatives in many cases:
- std::binary_search only indicates presence/absence
- upper_bound/lower_bound give you the opportunity to pick the wrong one
- all of the options have confusing names and definitions when your predicate
doesn't have simple "less than" semantics
- all of the options require iterators
- we plumb around a useless `value` parameter that should be a lambda capture
The API is inspired by Go's standard library, but we add an extra parameter as
well as some overloads and templates to show how clever C++ is.
Reviewers: ilya-biryukov, gribozavr
Subscribers: dexonsmith, kristina, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60779 — sammccall / detail - [x86] adjust LEA tests for better coverage; NFC
The scale can 1, 2, or 3. — spatel / detail - [LLVM-C] Add Accessors For Global Variable Metadata Properties
Summary: Metadata for a global variable is really a (GlobalVariable, Expression) tuple. Allow access to these, then allow retrieving the file, scope, and line for a DIVariable, whether global or local. This should be the last of the accessors required for uniform access to location and file information metadata.
Reviewers: jberdine, whitequark, deadalnix
Reviewed By: jberdine, whitequark
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60725 — codafi / detail - Fix a typo in comments. [NFC] — tamur / detail
- [NVPTXAsmPrinter] clean up dead code. NFC
Summary:
The printOperand function takes a default parameter, for which there are
zero call sites that explicitly pass such a parameter. As such, there
is no case to support. This means that the method
printVecModifiedImmediate is purly dead code, and can be removed.
The eventual goal for some of these AsmPrinter refactoring is to have
printOperand be a virtual method; making it easier to print operands
from the base class for more generic Asm printing. It will help if all
printOperand methods have the same function signature (ie. no Modifier
argument when not needed).
Reviewers: echristo, tra
Reviewed By: echristo
Subscribers: jholewinski, hiraditya, llvm-commits, craig.topper, srhines
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60727 — nickdesaulniers / detail - [TargetLowering] Rename preferShiftsToClearExtremeBits and shouldFoldShiftPairToMask (PR41359)
As discussed on PR41359, this patch renames the pair of shift-mask target feature functions to make their purposes more obvious.
shouldFoldShiftPairToMask -> shouldFoldConstantShiftPairToMask
preferShiftsToClearExtremeBits -> shouldFoldMaskToVariableShiftPair — rksimon / detail - [EarlyCSE] detect equivalence of selects with inverse conditions and commuted operands (PR41101)
This is 1 of the problems discussed in the post-commit thread for:
rL355741 / http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20190311/635516.html
and filed as:
https://bugs.llvm.org/show_bug.cgi?id=41101
Instcombine tries to canonicalize some of these cases (and there's room for improvement
there independently of this patch), but it can't always do that because of extra uses.
So we need to recognize these commuted operand patterns here in EarlyCSE. This is similar
to how we detect commuted compares and commuted min/max/abs.
Differential Revision: https://reviews.llvm.org/D60723 — spatel / detail - Time profiler: optimize json output time
Summary:
Use llvm::json::Array.reserve() to optimize json output time. Here is motivation:
https://reviews.llvm.org/D60609#1468941. In short: for the json array
with ~32K entries, pushing back each entry takes ~4% of whole time compared
to the method of preliminary memory reservation: (3995-3845)/3995 = 3.75%.
Reviewers: lebedev.ri
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60792 — anton-afanasyev / detail - [CVP] Simplify umulo and smulo that cannot overflow
If a umul.with.overflow or smul.with.overflow operation cannot
overflow, simplify it to a simple mul nuw / mul nsw. After the
refactoring in D60668 this is just a matter of removing an
explicit check against multiplications.
Differential Revision: https://reviews.llvm.org/D60791 — nikic / detail - [Support][JSON] Add reserve() to json Array
Summary:
Space reservation increases json lib performance for the arrays with large number of entries.
Here is the example and discussion: https://reviews.llvm.org/D60609#1468941
Reviewers: lebedev.ri, sammccall
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60788 — anton-afanasyev / detail - [SLP] Refactoring of the operand reordering code.
This is a refactoring patch which should have all the functionality of the current code. Its goal is twofold:
i. Cleanup and simplify the reordering code, and
ii. Generalize reordering so that it will work for an arbitrary number of operands, not just 2.
This is the second patch in a series of patches that will enable operand reordering across chains of operations. An example of this was presented in EuroLLVM'18 https://www.youtube.com/watch?v=gIEn34LvyNo .
Committed on behalf of @vporpo (Vasileios Porpodas)
Differential Revision: https://reviews.llvm.org/D59973 — rksimon / detail - [CVP] Add tests for non-overflowing mulo; NFC
Should be simplified to simple mul. — nikic / detail - [X86][AVX] X86ISD::PERMV/PERMV3 node types can never fold index ops
Improves codegen demonstrated by D60512 - instructions represented by X86ISD::PERMV/PERMV3 can never memory fold the operand used for their index register.
This patch updates the 'isUseOfShuffle' helper into the more capable 'isFoldableUseOfShuffle' that recognises that the op is used for a X86ISD::PERMV/PERMV3 index mask and can't be folded - allowing us to use broadcast/subvector-broadcast ops to reduce the size of the mask constant pool data.
Differential Revision: https://reviews.llvm.org/D60562 — rksimon / detail - [InstCombine] Prune fshl/fshr with masked operands
If a constant shift amount is used, then only some of the LHS/RHS
operand bits are demanded and we may be able to simplify based on
that. InstCombineSimplifyDemanded already had the necessary support
for that, we just weren't calling it with fshl/fshr as root.
In particular, this allows us to relax some masked funnel shifts
into simple shifts, as shown in the tests.
Patch by Shawn Landden.
Differential Revision: https://reviews.llvm.org/D60660 — nikic / detail - [InstCombine] Add tests for fshl/fshr with masked operands; NFC
Baseline tests for D60660.
Patch by Shawn Landden.
Differential Revision: https://reviews.llvm.org/D60688 — nikic / detail - [x86] add more tests for LEA formation; NFC
Promoting the shift to the wider type should allow LEA. — spatel / detail - [IR] Add WithOverflowInst class
This adds a WithOverflowInst class with a few helper methods to get
the underlying binop, signedness and nowrap type and makes use of it
where sensible. There will be two more uses in D60650/D60656.
The refactorings are all NFC, though I left some TODOs where things
could be improved. In particular we have two places where add/sub are
handled but mul isn't.
Differential Revision: https://reviews.llvm.org/D60668 — nikic / detail - [Tests] Add branch_weights to latches so that test is not effected by future profitability patch to LoopPredication — reames / detail
- [Hexagon] Remove indeterministic traversal order
Patch by Sergei Larin. — kparzysz / detail - [llvm-objdump] Test tabs in disassemble-align.s with a more visible character
Summary: Apply rupprecht's suggestion in D60376
Reviewers: rupprecht
Reviewed By: rupprecht
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60777 — maskray / detail - [DAGCombiner] Add missing flag to addressing mode check
The checks in `canFoldInAddressingMode` tested for addressing modes that have a
base register but didn't set the `HasBaseReg` flag to true (it's false by
default). This patch fixes that. Although the omission of the flag was
technically incorrect it had no known observable impact, so no tests were
changed by this patch.
Differential Revision: https://reviews.llvm.org/D60314 — luismarques / detail - [OCaml] Update api to account for FNeg and CallBr instructions
Summary:
This diff adds minimal support for the recent FNeg and CallBr
instructions to the OCaml bindings.
Reviewers: whitequark
Reviewed By: whitequark
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60680 — whitequark / detail - [RISCV] Custom lower SHL_PARTS, SRA_PARTS, SRL_PARTS
When not optimizing for minimum size (-Oz) we custom lower wide shifts
(SHL_PARTS, SRA_PARTS, SRL_PARTS) instead of expanding to a libcall.
Differential Revision: https://reviews.llvm.org/D59477 — luismarques / detail - [SystemZ] Add missing intrinsics to intrinsics-immarg.ll
As of r356091, support for the ImmArg intrinsics was added,
including a SystemZ test case. However, that test case doesn't
actually verify all SystemZ intrinsics with immediate arguments,
only a subset. The rest of them actually works correctly, there's
just no test for them. This patch add all missing intrinsics. — uweigand / detail - [llvm][Support] Provide interface to set thread priorities
Summary:
We have a multi-platform thread priority setting function(last piece
landed with D58683), I wanted to make this available to all llvm community,
there seem to be other users of such functionality with portability fixmes:
lib/Support/CrashRecoveryContext.cpp
tools/clang/tools/libclang/CIndex.cpp
Reviewers: gribozavr, ioeric
Subscribers: krytarowski, jfb, kristina, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D59130 — kadircet / detail - llvm-undname: Consistently use "return nullptr" in functions returning pointers — nico / detail
- llvm-undname: Fix nullptr deref on invalid structor names in template args
Similar to r358421: A StructorIndentifierNode has a Class field which
is read when printing it, but if the StructorIndentifierNode appears in
a template argument then demangleFullyQualifiedSymbolName() which sets
Class isn't called. Since StructorIndentifierNodes are always leaf
names, we can just reject them as well.
Found by oss-fuzz. — nico / detail - llvm-undname: Tweak arena allocator
- Make `allocUnalignedBuffer` look more like `allocArray` and `alloc`.
No behavior change.
- Change `Head->Used < Head->Capacity` to `Head->Used <= Head->Capacity`
in `allocArray` and `alloc`. No intended behavior change, might be a
minuscule memory usage improvement. Noticed this since it was the logic
used in `allocUnalignedBuffer`.
- Don't let `allocArray` alloc too small buffers for names that have
more than 512 levels of nesting (in 64-bit builds). Fixes a heap
buffer overflow found by oss-fuzz.
Differential Revision: https://reviews.llvm.org/D60774 — nico / detail - llvm-undname: add a missing CHECK: to a passing test — nico / detail
- Fix llvm-undname tests after r358485 — nico / detail
- gn build: Merge r358422 — nico / detail
- llvm-undname: Add a -raw-file flag to pass a raw buffer to microsoftDemangle
The default handling splits input into lines. Since
llvm-microsoft-demangle-fuzzer doesn't do this, oss-fuzz produces inputs
that only trigger crashes if the input isn't split into lines. This adds
a hidden flag -raw-file which passes file contents to microsoftDemangle() in
the same way the fuzzer does, for reproducing oss-fuzz reports.
Also change llvm-undname to have a non-0 exit code for invalid symbols.
Differential Revision: https://reviews.llvm.org/D60771 — nico / detail - Re-commit r357452: SimplifyCFG SinkCommonCodeFromPredecessors: Also sink function calls without used results (PR41259)
The original commit caused false positives from AddressSanitizer's
use-after-scope checks, which have now been fixed in r358478.
> The code was previously checking that candidates for sinking had exactly
> one use or were a store instruction (which can't have uses). This meant
> we could sink call instructions only if they had a use.
>
> That limitation seemed a bit arbitrary, so this patch changes it to
> "instruction has zero or one use" which seems more natural and removes
> the need to special-case stores.
>
> Differential revision: https://reviews.llvm.org/D59936 — hans / detail - Removed CMake cache upgrade code from 2011
Summary:
This code was added in r141266 to make a breaking change to CMake, but
still be compatible with existing cache files. The cache files from
2011 are irrelevant today in 2019.
Subscribers: mgorny, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60711 — gribozavr / detail - Asan use-after-scope: don't poison allocas if there were untraced lifetime intrinsics in the function (PR41481)
If there are any intrinsics that cannot be traced back to an alloca, we
might have missed the start of a variable's scope, leading to false
error reports if the variable is poisoned at function entry. Instead, if
there are some intrinsics that can't be traced, fail safe and don't
poison the variables in that function.
Differential revision: https://reviews.llvm.org/D60686 — hans / detail - Use native llvm JSON library for time profiler output
Summary: Replace plain json text output with llvm JSON library wrapper using.
Reviewers: takuto.ikuta, lebedev.ri
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60609 — anton-afanasyev / detail - [llvm-objdump] Align instructions to a tab stop in disassembly output
This relands D60376/rL358405, with the difference: sed 'y/\t/ /' -> tr '\t' ' '
BSD sed doesn't support escape characters for the 'y' command.
I didn't use it in rL358405 because it was not listed at
https://llvm.org/docs/GettingStarted.html#software but it
should be available.
Original description:
In GNU objdump, -w/--wide aligns instructions in the disassembly output.
This patch does the same to llvm-objdump. However, we always use the
wide format (-w/--wide is ignored), because the narrow format
(instructions are misaligned) is probably not very useful.
In llvm-readobj, we made a similar decision: always use the wide format,
accept but ignore -W/--wide.
To save some columns, we change the tab before hex bytes (controlled by
--[no-]show-raw-insn) to a space. — maskray / detail - [llvm-objdump] Simplify PrintHelpMessage() logic
This relands rL358418. It missed one test that should also use -macho
Note, all the other -private-header -exports-trie tests are used
together with -macho. — maskray / detail - [CodeExtractor] Add a few debug lines to understand why a region is not extracted
The CodeExtractor is not smart enough to compute which basic block is
the entry of a region. Instead it relies on the order of the list
of basic blocks that is handed to it and assumes that the entry
is the first block in the list.
Without the additional debug information, it is hard to understand
why a valid region does not get extracted, because we would miss
that the order of in the list just doesn't match what the CodeExtractor
wants.
NFC — qcolombet / detail - Remove some more unused headers from MachineFunction.h and friends.
Most of these headers are still included via transitive includes and
so won't likely show any problems or improvements in incremental
rebuild time.
Differential Revision: https://reviews.llvm.org/D60741 — echristo / detail - Reapply [Support] Fix recursive response file expansion guard
The test in the dependent revision has been fixed for Windows.
Original commit message:
Response file expansion limits the amount of expansion to prevent
potential infinite recursion. However, the current logic assumes that
any argument beginning with @ is a response file, which is not true for
e.g. `-Xlinker -rpath -Xlinker @executable_path/../lib` on Darwin.
Having too many of these non-response file arguments beginning with @
prevents actual response files from being expanded. Instead, limit based
on the number of successful response file expansions, which should still
prevent infinite recursion but also avoid false positives.
Differential Revision: https://reviews.llvm.org/D60631
llvm-svn: 358452 — smeenai / detail - Reapply [Support] Add a test for recursive response file expansion
Use the appropriate tokenizer to fix the test on Windows.
Original commit message:
I'm going to be modifying the logic to avoid infinitely recursing on
self-referential response files, so add a unit test to verify the
expected behavior.
Differential Revision: https://reviews.llvm.org/D60630
llvm-svn: 358451 — smeenai / detail - Revert [Support] Add a test for recursive response file expansion
This reverts r358451 (git commit c8497467edc5766ae81ffbde58159f8c6af50803)
The test breaks a Windows buildbot:
http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-win/builds/17016/steps/test-check-all/logs/stdio — smeenai / detail - Revert [Support] Fix recursive response file expansion guard
This reverts r358452 (git commit c8df4fb9c3865eac52a99602c26bbc070098c3d4)
A dependent commit breaks the Windows buildbots. — smeenai / detail - Revert r358405: "[llvm-objdump] Align instructions to a tab stop in disassembly output"
The test fails on darwin due to a sed error:
sed: 1: "y/\t/ /": transform strings are not the same length — arphaman / detail - [AArch64][GlobalISel] Don't do extending loads combine for non-pow-2 types.
Since non-pow-2 types are going to get split up into multiple loads anyway,
don't do the [SZ]EXTLOAD combine for those and save us trouble later in
legalization. — Amara Emerson / detail - [LSR] Rewrite misses some fixup locations if it splits critical edge
If LSR split critical edge during rewriting phi operands and
phi node has other pending fixup operands, we need to
update those pending fixups. Otherwise formulae will not be
implemented completely and some instructions will not be eliminated.
llvm.org/PR41445
Differential Revision: https://reviews.llvm.org/D60645
Patch by: Denis Bakhvalov <denis.bakhvalov@intel.com> — qcolombet / detail - Only use argv[0] as the main executable name if it exists.
Under some environments, argv[0] doesn't hold a valid file name, but
sys::fs::getMainExecutable will find the main executable properly.
This patch tweaks the logic to fall back to sys::fs::getMainExecutable
in more situations.
Differential Revision: https://reviews.llvm.org/D60730 — silvas / detail - [EarlyCSE] add more tests for double-negated select condition; NFC — spatel / detail
- [Support] Fix recursive response file expansion guard
Response file expansion limits the amount of expansion to prevent
potential infinite recursion. However, the current logic assumes that
any argument beginning with @ is a response file, which is not true for
e.g. `-Xlinker -rpath -Xlinker @executable_path/../lib` on Darwin.
Having too many of these non-response file arguments beginning with @
prevents actual response files from being expanded. Instead, limit based
on the number of successful response file expansions, which should still
prevent infinite recursion but also avoid false positives.
Differential Revision: https://reviews.llvm.org/D60631 — smeenai / detail - [Support] Add a test for recursive response file expansion
I'm going to be modifying the logic to avoid infinitely recursing on
self-referential response files, so add a unit test to verify the
expected behavior.
Differential Revision: https://reviews.llvm.org/D60630 — smeenai / detail - [X86] Limit the 'x' inline assembly constraint to zmm0-15 when used for a 512 type.
The 'v' constraint is used to select zmm0-31. This makes 512 bit consistent with 128/256-bit.a — ctopper / detail - [X86] Fix a stack folding test to have a full xmm2-31 clobber list instead of stopping at xmm15. Add an additional dependency to keep instruction below inline asm block. — ctopper / detail
- Time profiler: small fixes and optimizations
Summary: Fixes from Roman's review here: https://reviews.llvm.org/D58675#1465336
Reviewers: lebedev.ri
Subscribers: hiraditya, mgrang, cfe-commits, llvm-commits
Tags: #clang, #llvm
Differential Revision: https://reviews.llvm.org/D60663 — anton-afanasyev / detail - AMDGPU: Fix unreachable when counting register usage of SGPR96 — arsenm / detail
- AMDGPU: Fix printed format of SReg_96
These are artificial, so I think this should only come up with inline
asm comments. — arsenm / detail - [EarlyCSE] add test for select condition double-negation; NFC — spatel / detail
- Revert r358418: "[llvm-objdump] Simplify PrintHelpMessage() logic"
This reverts commit r358418 as it broke `test/Object/objdump-export-list`
on Darwin. — arphaman / detail - [Tests] Add a few more tests for LoopPredication w/invariant loads
Making sure to cover an important legality cornercase. — reames / detail - [X86] Block i32/i64 for 'k' and 'Yk' in getRegForInlineAsmConstraint without avx512bw.
32 and 64 bit k-registers require avx512bw. If we don't block this properly, it leads to a crash. — ctopper / detail - [LoopPred] Stop passing around builders [NFC]
This is a preparatory patch for D60093. This patch itself is NFC, but while preparing this I noticed and committed a small hoisting change in rL358419.
The basic structure of the new scheme is that we pass around the guard ("the using instruction"), and select an optimal insert point by examining operands at each construction point. This seems conceptually a bit cleaner to start with as it isolates the knowledge about insertion safety at the actual insertion point.
Note that the non-hoisting path is not actually used at the moment. That's not exercised until D60093 is rebased on this one.
Differential Revision: https://reviews.llvm.org/D60718 — reames / detail - [x86] update test checks; NFC — spatel / detail
- [DEBUGINFO] Prevent Instcombine from dropping debuginfo when removing zexts
Zexts can be treated like no-op casts when it comes to assessing whether their
removal affects debug info.
Reviewer: aprantl
Differential Revision: https://reviews.llvm.org/D60641 — wolfgangp / detail - Add explicit dependency to MCDwarf.h in ARC backend. — petecoup / detail
- Fix header guard typo and build error. — yamauchi / detail
- [CommandLineParser] Add DefaultOption flag
Summary: Add DefaultOption flag to CommandLineParser which provides a
default option or alias, but allows users to override it for some
other purpose as needed.
Also, add `-h` as a default alias to `-help`, which can be seamlessly
overridden by applications like llvm-objdump and llvm-readobj which
use `-h` as an alias for other options.
(relanding after revert, r358414)
Added DefaultOptions.clear() to reset().
Reviewers: alexfh, klimek
Reviewed By: klimek
Subscribers: kristina, MaskRay, mehdi_amini, inglorion, dexonsmith, hiraditya, llvm-commits, jhenderson, arphaman, cfe-commits
Tags: #clang, #llvm
Differential Revision: https://reviews.llvm.org/D59746 — dhinton / detail - [X86] Restore the pavg intrinsics.
The pattern we replaced these with may be too hard to match as demonstrated by
PR41496 and PR41316.
This patch restores the intrinsics and then we can start focusing
on the optimizing the intrinsics.
I've mostly reverted the original patch that removed them. Though I modified
the avx512 intrinsics to not have masking built in.
Differential Revision: https://reviews.llvm.org/D60674 — ctopper / detail - Add slbfee instruction. — sfertile / detail
- [PGO] Profile guided code size optimization.
Summary:
Enable some of the existing size optimizations for cold code under PGO.
A ~5% code size saving in big internal app under PGO.
The way it gets BFI/PSI is discussed in the RFC thread
http://lists.llvm.org/pipermail/llvm-dev/2019-March/130894.html
Note it doesn't currently touch loop passes.
Reviewers: davidxl, eraman
Reviewed By: eraman
Subscribers: mgorny, javed.absar, smeenai, mehdi_amini, eraman, zzheng, steven_wu, dexonsmith, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D59514 — yamauchi / detail - llvm-undname: Fix nullptr deref on invalid conversion operator names in template args
A ConversionOperatorIdentifierNode has a TargetType which is read when
printing it, but if the ConversionOperatorIdentifierNode appears in a
template argument there's nothing that can provide the TargetType.
Normally the COIN is a symbol (leaf) name and takes its TargetType from the
symbol's type, but in a template argument context the COIN can only be
either a non-leaf name piece or a type, and must hence be invalid.
Similar to the COIN check in demangleDeclarator().
Found by oss-fuzz. — nico / detail - [EarlyCSE] add tests for selects with commuted operands (PR41101); NFC — spatel / detail
- [LoopPred] Hoist and of predicated checks where legal
If we have multiple range checks which can be predicated, hoist the and of the results outside the loop. This minorly cleans up the resulting IR, but the main motivation is as a building block for D60093. — reames / detail - [llvm-objdump] Simplify PrintHelpMessage() logic — maskray / detail
- [llvm-objdump] Wrap things in namespace llvm — maskray / detail
- [llvm-objdump] Delete unused forward declarations — maskray / detail
- [llvm-objdump] Reorganize cl::opt variables and move Mach-O specifics to MachODump.cpp — maskray / detail
- Revert r358337: "[CommandLineParser] Add DefaultOption flag"
The change causes test failures under asan. Reverting to unbreak our
integrate. — ibiryukov / detail - [EarlyCSE] regenerate test checks; NFC — spatel / detail
- [llvm-objdump] Align instructions to a tab stop in disassembly output
Summary:
In GNU objdump, -w/--wide aligns instructions in the disassembly output.
This patch does the same to llvm-objdump. However, we always use the
wide format (-w/--wide is ignored), because the narrow format
(instructions are misaligned) is probably not very useful.
In llvm-readobj, we made a similar decision: always use the wide format,
accept but ignore -W/--wide.
To save some columns, we change the tab before hex bytes (controlled by
--[no-]show-raw-insn) to a space.
Reviewers: rupprecht, jhenderson, grimar
Reviewed By: jhenderson
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60376 — maskray / detail - [InstCombine] canonicalize fdiv after fmul if reassociation is allowed
(X / Y) * Z --> (X * Z) / Y
This can allow other optimizations/reassociations as shown in the test diffs. — spatel / detail - DAG: propagate ConsecutiveRegs flags to returns too.
Arguments already have a flag to inform backends when they have been split up.
The AArch64 arm64_32 ABI makes use of these on return types too, so that code
emitted for armv7k can be ABI-compliant.
There should be no CodeGen changes yet, just making more information available. — Tim Northover / detail - DAG: propagate whether an arg is a pointer for CallingConv decisions.
The arm64_32 ABI specifies that pointers (despite being 32-bits) should be
zero-extended to 64-bits when passed in registers for efficiency reasons. This
means that the SelectionDAG needs to be able to tell the backend that an
argument was originally a pointer, which is implmented here.
Additionally, some memory intrinsics need to be declared as taking an i8*
instead of an iPTR.
There should be no CodeGen change yet, but it will be triggered when AArch64
backend support for ILP32 is added. — Tim Northover / detail - gn build: Merge r358390 — nico / detail
- [llvm-readelf] Correctly dump symbols whose section id is SHN_XINDEX
Differential revision: https://reviews.llvm.org/D60614 — evgeny777 / detail - [llvm-readobj] Reapply: Improve error message for --string-dump
This is a resubmission of a previous patch that caused test failures,
with the fixes for the relevant tests included.
Fixes bug 40630: https://bugs.llvm.org/show_bug.cgi?id=40630
This patch changes the error message when the section specified by
--string-dump cannot be found by including the name of the section in
the error message and changing the prefix text to not imply that the
file itself was invalid. As part of this change some uses of
std::error_code have been replaced with the llvm Error class to better
encapsulate the error info (rather than passing File strings around),
and the WithColor class replaces string literal error prefixes. — stozer / detail - [AMDGPU] Fixed incorrect test in vcnd/vcmp optimization
This fixes a test I introduced in change D59191 (that added src0 and
src1 modifiers to the v_cndmask instruction for disassembly purposes).
Spotted by David Binderman in bug 41488.
Differential Revision: https://reviews.llvm.org/D60652
Change-Id: I6ac95e66cd84e812ed3359ad57bcd0e13198ba0c — tpr / detail - [Docs] Switch a code block from LLVM to text
While I can't replicate this locally, it looks like the buildbots don't
recognize the IR block in r358385 l764 as IR. Downgrade it to being just
text while I look into it.
http://lab.llvm.org:8011/builders/llvm-sphinx-docs/builds/30132 — jmorse / detail - FileCheck [1/12]: Move variable table in new object
Summary:
This patch is part of a patch series to add support for FileCheck
numeric expressions. This specific patch adds a new class to hold
pattern matching global state.
The table holding the values of FileCheck variable constitutes some sort
of global state for the matching phase, yet is passed as parameters of
all functions using it. This commit create a new FileCheckPatternContext
class pointed at from FileCheckPattern. While it increases the line
count, it separates local data from global state. Later commits build
on that to add numeric expression global state to that class.
Copyright:
- Linaro (changes up to diff 183612 of revision D55940)
- GraphCore (changes in later versions of revision D55940 and
in new revision created off D55940)
Reviewers: jhenderson, chandlerc, jdenny, probinson, grimar, arichardson, rnk
Subscribers: hiraditya, llvm-commits, probinson, dblaikie, grimar, arichardson, tra, rnk, kristina, hfinkel, rogfer01, JonChesterfield
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60381 — thopre / detail - [TableGen] Include schedule model name in diagnostic.
If you have more than one schedule model in your TableGen target
definitions, then the diagnostic "No schedule information for
instruction 'foo'" is rather unhelpful, because it doesn't tell you
_which_ schedule model is missing the necessary information (or, as it
might be, missing the UnsupportedFeatures definition that would stop
it thinking it needed it).
Extended the message to include the name of the schedule model that
it's complaining about.
Reviewers: nhaehnle, hfinkel, javedabsar, efriedma, javed.absar
Reviewed By: javed.absar
Subscribers: javed.absar, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60559 — statham / detail - [Docs] Correct some indentation muppetry that trips buildbots — jmorse / detail
- [DWARF] Fix DWARFVerifier::DieRangeInfo::contains
It didn't handle empty LHS correctly. If two ranges of LHS were
contiguous and jointly contained one range of RHS, it could also be incorrect.
DWARFAddressRange::contains can be removed and its tests can be merged into DWARFVerifier::DieRangeInfo::contains — maskray / detail - [DebugInfo][Docs] Document variable location metadata transformations
This patch adds documentation explaining how variable location information is
compiled from the IR representation down to the end of the codegen pipeline,
but avoiding discussion of file formats and encoding.
This should make it clearer how the dbg.value / dbg.declare etc intrinsics
are transformed and arranged into DBG_VALUE instructions, and their meaning.
Differential Revision: https://reviews.llvm.org/D59790 — jmorse / detail - Codegen: Fixed perf branch_weights in couple of tests. NFC.
This is need to pass future checks of perf branch_weights metadata. — yrouban / detail - Revert "[DWARF] Delete redundant check in DWARFAddressRange::intersects"
This reverts rL358377. It isn't redundant, though the semantic seems weird. — maskray / detail - [Transforms][ASan] Move findAllocaForValue() to Utils/Local.cpp. NFC
Summary:
Factor out findAllocaForValue() from ASan so that we can use it in
MSan to handle lifetime intrinsics.
Reviewers: eugenis, pcc
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60615 — glider / detail - [NewPM] Add Option handling for SimplifyCFG
This patch enables passing options to SimplifyCFGPass via the passes pipeline.
Reviewers: chandlerc, fedor.sergeev, leonardchan, philip.pfaffe
Reviewed By: fedor.sergeev
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D60675 — skatkov / detail - [DWARF] Delete redundant check in DWARFAddressRange::intersects — maskray / detail
- [DWARF] Fix DWARFVerifier::DieRangeInfo::intersects
It was incorrect if RHS had more than 1 ranges and one of the ranges interacted with *this — maskray / detail - [DWARF] Make DWARFDebugLine::ParsingState::RowNumber a local variable — maskray / detail
- [SelectionDAG] Use KnownBits::computeForAddSub/computeForAddCarry
Summary:
Use KnownBits::computeForAddSub/computeForAddCarry
in SelectionDAG::computeKnownBits when doing value
tracking for addition/subtraction.
This should improve the precision of the known bits,
as we only used to make a simple estimate of known
zeroes. The KnownBits support functions are also
able to deduce bits that are known to be one in the
result.
Reviewers: spatel, RKSimon, nikic, lebedev.ri
Reviewed By: nikic
Subscribers: nikic, javed.absar, lebedev.ri, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60460 — bjope / detail - [X86] Regenerate checks for domain-reassignment.mir
Apparently there are some stray IMPLICIT_DEF operations that weren't in the
checks. Not sure if they've always been there or something changed at some
point. — ctopper / detail - [Sparc] Fix typo. NFC. — jimlin / detail
- [GlobalISel] Enable CSE in the IRTranslator & legalizer for -O0 with constants only.
Other opcodes shouldn't be CSE'd until we can be sure debug info quality won't
be degraded.
This change also improves the IRTranslator so that in most places, but not all,
it creates constants using the MIRBuilder directly instead of first creating a
new destination vreg and then creating a constant. By doing this, the
buildConstant() method can just return the vreg of an existing G_CONSTANT
instead of having to create a COPY from it.
I measured a 0.2% improvement in compile time and a 0.9% improvement in code
size at -O0 ARM64.
Compile time:
Program base cse diff
test-suite...ark/tramp3d-v4/tramp3d-v4.test 9.04 9.12 0.8%
test-suite...Mark/mafft/pairlocalalign.test 2.68 2.66 -0.7%
test-suite...-typeset/consumer-typeset.test 5.53 5.51 -0.4%
test-suite :: CTMark/lencod/lencod.test 5.30 5.28 -0.3%
test-suite :: CTMark/Bullet/bullet.test 25.82 25.76 -0.2%
test-suite...:: CTMark/ClamAV/clamscan.test 6.92 6.90 -0.2%
test-suite...TMark/7zip/7zip-benchmark.test 34.24 34.17 -0.2%
test-suite :: CTMark/SPASS/SPASS.test 6.25 6.24 -0.1%
test-suite...:: CTMark/sqlite3/sqlite3.test 1.66 1.66 -0.1%
test-suite :: CTMark/kimwitu++/kc.test 13.61 13.60 -0.0%
Geomean difference -0.2%
Code size:
Program base cse diff
test-suite...-typeset/consumer-typeset.test 1315632 1266480 -3.7%
test-suite...:: CTMark/ClamAV/clamscan.test 1313892 1297508 -1.2%
test-suite :: CTMark/lencod/lencod.test 1439504 1423112 -1.1%
test-suite...TMark/7zip/7zip-benchmark.test 2936980 2904172 -1.1%
test-suite :: CTMark/Bullet/bullet.test 3478276 3445460 -0.9%
test-suite...ark/tramp3d-v4/tramp3d-v4.test 8082868 8033492 -0.6%
test-suite :: CTMark/kimwitu++/kc.test 3870380 3853972 -0.4%
test-suite :: CTMark/SPASS/SPASS.test 1434904 1434896 -0.0%
test-suite...Mark/mafft/pairlocalalign.test 764528 764528 0.0%
test-suite...:: CTMark/sqlite3/sqlite3.test 782092 782092 0.0%
Geomean difference -0.9%
Differential Revision: https://reviews.llvm.org/D60580 — Amara Emerson / detail - [GlobalISel] Introduce a CSEConfigBase class to allow targets to define their own CSE configs.
Because CodeGen can't depend on GlobalISel, we need a way to encapsulate the CSE
configs that can be passed between TargetPassConfig and the targets' custom
pass configs. This CSEConfigBase allows targets to create custom CSE configs
which is then used by the GISel passes for the CSEMIRBuilder.
This support will be used in a follow up commit to allow constant-only CSE for
-O0 compiles in D60580. — Amara Emerson / detail - llvm-undname: Fix oss-fuzz-foudn crash-on-invalid with incomplete special table nodes — nico / detail
- gn build: Merge r358297 — nico / detail
- gn build: Merge r358243 — nico / detail
- gn build: Merge r358272 — nico / detail
clang-r359494-t55990-b55990.tar.gz (Apr 29, 2019 2:13:41 PM)
- [LibTooling] Fix unneeded use of unique_ptr where shared_ptr is expected.
Summary: This fixes a few places in the Stencil implementation where a unique_ptr is created at a callsite that expects shared_ptr. Since the former implicitly converts to the latter, the code compiles and runs correctly as is. But, there's no reason to involve unique_ptr -- the current code was leftover from a previous version in which unique_ptr was the expected type.
Reviewers: sbenza
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D61005 — ymandel / detail - [OPENMP]Fix PR41617: crash on template instantiation.
Fixed the crash on the template instantiation when trying to check the
data locality in the current instantiation scope. — abataev / detail - [libclang] Add missing export for clang_Cursor_isAnonymousRecordDecl
Follow up for D61232 to fix build. — yvvan / detail - [libclang] Restore old clang_Cursor_isAnonymous behaviour
D54996 Changed the behaviour of clang_Cursor_isAnonymous, but there is no alternative available to get the old behaviour in some cases, which is essential for determining if a record is syntactically accessible, e.g.
struct {
int x;
int y;
} foo;
struct {
struct {
int x;
int y;
};
} bar;
void fun(struct { int x; int y; } *param);
The only 'anonymous' struct here is the one nested in bar, since there is
no way to reference the struct itself, only the fields within. Though the
anonymity applies to the instance itself, not the type.
To avoid confusion, I have added a new function called clang_Cursor_isAnonymousRecordDecl
which has the old behaviour of clang_Cursor_isAnonymous (and updated the doc
for the latter as well, which was seemingly forgotten).
Patch by Jorn Vernee.
Differential Revision: https://reviews.llvm.org/D61232 — yvvan / detail - [PowerPC][Clang] Add tests for PowerPC MMX intrinsics
Add the rest of test cases covering functions defined in mmintrin.h on PowerPC.
Reviewed By: Jinsong Ji — chaofan / detail - Reinstate r359059, reverted in r359361, with a fix to properly prevent
us emitting the operand of __builtin_constant_p if it has side-effects.
Original commit message:
Fix interactions between __builtin_constant_p and constexpr to match
current trunk GCC.
GCC permits information from outside the operand of
__builtin_constant_p (but in the same constant evaluation context) to be
used within that operand; clang now does so too. A few other minor
deviations from GCC's behavior showed up in my testing and are also
fixed (matching GCC):
* Clang now supports nullptr_t as the argument type for
__builtin_constant_p
* Clang now returns true from __builtin_constant_p if called with a
null pointer
* Clang now returns true from __builtin_constant_p if called with an
integer cast to pointer type — rsmith / detail - [AArch64] Initialize HasMTE — Vitaly Buka / detail
- Revert Fix interactions between __builtin_constant_p and constexpr to match current trunk GCC.
This reverts r359059 (git commit 0b098754b73f3b96d00ecb1c7605760b11c90298) — jgorbe / detail - [Fuchsia] Support multilib for -fsanitize=address and -fno-exceptions
This introduces a support for multilibs to Fuchsia driver. Unlike the
existing multilibs that are used primarily for handling different
architecture variants, we use multilibs to handle different variants
of Clang runtime libraries: -fsanitize=address and -fno-exceptions
are the two we support initially. This replaces the existing support
for sanitized runtimes libraries that was only used by Fuchsia driver
and it also refactors some of the logic to allow sharing between GNU
and Fuchsia drivers.
Differential Revision: https://reviews.llvm.org/D61040 — phosek / detail - [Driver] Support priority for multilibs
When more than one multilib flag matches, try to select the best
possible match based on priority. When two different multilibs with
the same same priority match, we still throw an error matching the
existing behavior.
Differential Revision: https://reviews.llvm.org/D60990 — phosek / detail - [clang][driver] Weaken the test from 359353 to appease Windows bots — arphaman / detail
- [driver][macOS] Link libarclite from the default toolchain when clang
is running in a toolchain outside of xcode
'libarclite' usually lives in the same toolchain as 'clang'. However, the
Swift open source toolchains for macOS distribute Clang without 'libarclite'.
In that case, to allow the linker to find 'libarclite', we point to the
'libarclite' that should be in the XcodeDefault toolchain instead. The
path to the toolchain is inferred from the SDK path if it's specified.
https://bugs.swift.org/browse/SR-9972
rdar://49947573 — arphaman / detail - Add to the release notes the fact that UninitializedObject checker is now
considered as stable — sylvestre / detail - [AArch64] Add support for MTE intrinsics
This provides intrinsics support for Memory Tagging Extension (MTE),
which was introduced with the Armv8.5-a architecture.
These intrinsics are available when __ARM_FEATURE_MEMORY_TAGGING is defined.
Each intrinsic is described in detail in the ACLE Q1 2019 documentation:
https://developer.arm.com/docs/101028/latest
Reviewed By: Tim Nortover, David Spickett
Differential Revision: https://reviews.llvm.org/D60485 — javed.absar / detail - [MinGW] Always emit local typeinfo
This makes sure that code built with headers for a statically linked
libc++ also works when linking to the DLL version, when the DLL
hasn't been built with --export-all-symbols.
This matches what GCC for MinGW does for this test case.
Differential Revision: https://reviews.llvm.org/D61177 — mstorsjo / detail - [HIP] Fix visibility of `__constant__` variables.
Summary:
- `__constant__` variables should not be `hidden` as the linker may turn
them into `LOCAL` symbols.
Reviewers: yaxunl
Subscribers: jvesely, nhaehnle, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D61194 — hliao / detail - [MinGW] Do dllexport inline methods in template instantiation
Normally, in MinGW mode, inline methods aren't dllexported.
However, in the case of a dllimported template instantiation,
the inline methods aren't instantiated locally, but referenced
from the instantiation. Therefore, those methods also need to
be dllexported, in the case of an instantiation.
GCC suffers from the same issue, reported at [1], but the issue
is still unresolved there.
[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89088
Differential Revision: https://reviews.llvm.org/D61176 — mstorsjo / detail - [MinGW] Don't let template instantiation declarations cover nested classes
An explicit template instantiation declaration used to let
callers assume both outer and nested classes instantiations were
defined in a different translation unit.
If the instantiation is marked dllexport, only the outer class
is exported, but the caller will try to reference the instantiation
of both outer and inner classes.
This makes MinGW mode match both MSVC and Windows Itanium, by
having instantations only cover the outer class, and locally emitting
definitions of the nested classes. Windows Itanium was changed to
use this behavious in SVN r300804.
This deviates from what GCC does, but should be safe (and only
inflate the object file size a bit, but MSVC and Windows Itanium
modes do the same), and fixes cases where inner classes aren't
dllexported.
This fixes missing references in combination with dllexported/imported
template intantiations.
GCC suffers from the same issue, reported at [1], but the issue
is still unresolved there. The issue can probably be solved either
by making dllexport cover all nested classes as well, or this
way (matching MSVC).
[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89087
Differential Revision: https://reviews.llvm.org/D61175 — mstorsjo / detail - [OPENMP]Added check for non-random access types for the dependent loop
counters.
According to the OpenMP 5.0, For any associated loop where the b or lb
expression is not loop invariant with respect to the outermost loop, the
var-outer that appears in the expression may not have a random access
iterator type. — abataev / detail - [ASTImporter] Copy Argument Passing Restrictions setting when importing a CXXRecordDecl definition
Summary:
For a CXXRecordDecl the RecordDeclBits are stored in the DeclContext. Currently when we import the definition of a CXXRecordDecl via the ASTImporter we do not copy over this data.
This change will add support for copying the ArgPassingRestrictions from RecordDeclBits to fix an LLDB expression parsing bug where we would set it to not pass in registers.
Note, we did not copy over any other of the RecordDeclBits since we don't have tests for those. We know that copying over LoadedFieldsFromExternalStorage would be a error and that may be the case for others as well.
The companion LLDB review: https://reviews.llvm.org/D61146
Differential Review: https://reviews.llvm.org/D61140 — shafik / detail - [BPF] do not generate predefined macro bpf
"DefineStd(Builder, "bpf", Opts)" generates the following three
macros:
bpf
__bpf
__bpf__
and the macro "bpf" is due to the fact that the target language
is C which allows GNU extensions.
The name "bpf" could be easily used as variable name or type
field name. For example, in current linux kernel, there are
four places where bpf is used as a field name. If the corresponding
types are included in bpf program, the compilation error will
occur.
This patch removed predefined macro "bpf" as well as "__bpf" which
is rarely used if used at all.
Signed-off-by: Yonghong Song <yhs@fb.com>
Differential Revision: https://reviews.llvm.org/D61173 — yhs / detail - [MinGW] Fix dllexport of explicit template instantiation
Contrary to MSVC, GCC/MinGW needs to have the dllexport attribute
on the template instantiation declaration, not on the definition.
Previously clang never marked explicit template instantiations as
dllexport in MinGW mode, if the instantiation had a previous
declaration, regardless of where the attribute was placed. This
makes Clang behave like GCC in this regard, and allows using the
same attribute form for both MinGW compilers.
This fixes PR40256.
Differential Revision: https://reviews.llvm.org/D61118 — mstorsjo / detail - [Analyzer] Iterator Checkers - Do an early return after handling calls
This patch is more of a fix than a real improvement: in checkPostCall()
we should return immediately after finding the right call and handling
it. This both saves unnecessary processing and double-handling calls by
mistake.
Differential Revision: https://reviews.llvm.org/D61134 — baloghadamsoftware / detail - [clang-format] Fix documentation for FixNamespaceComments
Fixes PR40409
Differential Revision: https://reviews.llvm.org/D61174 — owenpan / detail - PR41607: Don't forget to substitute outer template arguments into a
class-scope explicit specialization of a class template. — rsmith / detail - [analyzer] RetainCount: Add a suppression for "the Matching rule".
In the OSObject universe there appears to be another slightly popular contract,
apart from "create" and "get", which is "matching". It optionally consumes
a "table" parameter and if a table is passed, it fills in the table and
returns it at +0; otherwise, it creates a new table, fills it in and
returns it at +1.
For now suppress false positives by doing a conservative escape on all functions
that end with "Matching", which is the naming convention that seems to be
followed by all such methods.
Differential Revision: https://reviews.llvm.org/D61161 — dergachev / detail - [analyzer] RetainCount: Allow offsets in return values.
Because RetainCountChecker has custom "local" reasoning about escapes,
it has a separate facility to deal with tracked symbols at end of analysis
and check them for leaks regardless of whether they're dead or not.
This facility iterates over the list of tracked symbols and reports
them as leaks, but it needs to treat the return value specially.
Some custom allocators tend to return the value with an offset, storing
extra metadata at the beginning of the buffer. In this case the return value
would be a non-base region. In order to avoid false positives, we still need to
find the original symbol within the return value, otherwise it'll be unable
to match it to the item in the list of tracked symbols.
Differential Revision: https://reviews.llvm.org/D60991 — dergachev / detail - [analyzer] Fix crash when returning C++ objects from ObjC messages-to-nil.
the assertion is in fact incorrect: there is a cornercase in Objective-C++
in which a C++ object is not constructed with a constructor, but merely
zero-initialized. Namely, this happens when an Objective-C message is sent
to a nil and it is supposed to return a C++ object.
Differential Revision: https://reviews.llvm.org/D60988 — dergachev / detail - [www] Rebuild cxx_dr_status. — rsmith / detail
- C++ DR2387: a variable template declared wtih (or instantiated with) a
const-qualified type is not implicitly given internal linkage. But a
variable template declared 'static' is.
This reinstates part of r359048, reverted in r359076. — rsmith / detail - Add missing diagnostic for explicit instantiation declarations naming
internal linkage entities.
Such constructs are ill-formed by [temp.explicit]p13. We make a special
exception to permit an invalid construct used by libc++ in some build
modes: its <valarray> header declares some functions with the
internal_linkage attribute and then (meaninglessly) provides explicit
instantiation declarations for them. Luckily, Clang happens to
effectively ignore the explicit instantiation declaration when
generating code in this case, and this change codifies that behavior.
This reinstates part of r359048, reverted in r359076. (The libc++ issue
triggering the rollback has been addressed.) — rsmith / detail - Revert lib/Header: Fix Visual Studio builds
This reverts r359257 (git commit 00d9789509a4c573a48f60893b95314a119edd42)
This broke check-clang. — tstellar / detail - lib/Header: Fix Visual Studio builds
Summary:
This is a follow up to r355253, which inadvertently broke Visual
Studio builds by trying to copy files from CMAKE_CFG_INTDIR.
See https://reviews.llvm.org/D58537#inline-532492
Reviewers: smeenai, vzakhari, phosek
Reviewed By: smeenai
Subscribers: mgorny, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D61054 — tstellar / detail - Revert [COFF] Statically link certain runtime library functions
This reverts r359250 (git commit 4730604bd3a361c68b92b18bf73a5daa15afe9f4)
The newly added test should use -cc1 and -emit-llvm and there are other
test failures that need fixing. — rnk / detail - [COFF] Statically link certain runtime library functions
Statically link certain runtime library functions for MSVC/GNU Windows
environments. This is consistent with MSVC behavior.
Fixes LNK4286 and LNK4217 warnings from link.exe when linking the static
CRT:
LINK : warning LNK4286: symbol '__std_terminate' defined in 'libvcruntime.lib(ehhelpers.obj)' is imported by 'ASAN_NOINST_TEST_OBJECTS.asan_noinst_test.cc.x86_64-calls.o'
LINK : warning LNK4286: symbol '__std_terminate' defined in 'libvcruntime.lib(ehhelpers.obj)' is imported by 'ASAN_NOINST_TEST_OBJECTS.asan_test_main.cc.x86_64-calls.o'
LINK : warning LNK4217: symbol '_CxxThrowException' defined in 'libvcruntime.lib(throw.obj)' is imported by 'ASAN_NOINST_TEST_OBJECTS.gtest-all.cc.x86_64-calls.o' in function '"int `public: static class UnitTest::GetInstance * __cdecl testing::UnitTest::GetInstance(void)'::`1'::dtor$5" (?dtor$5@?0??GetInstance@UnitTest@testing@@SAPEAV12@XZ@4HA)'
Reviewers: mstorsjo, efriedma, TomTan, compnerd, smeenai, mgrang
Subscribers: abdulras, theraven, smeenai, pcc, mehdi_amini, javed.absar, inglorion, kristof.beyls, dexonsmith, cfe-commits
Differential Revision: https://reviews.llvm.org/D55229 — rnk / detail - [CUDA] Implemented _[bi]mma* builtins.
These builtins provide access to the new integer and
sub-integer variants of MMA (matrix multiply-accumulate) instructions
provided by CUDA-10.x on sm_75 (AKA Turing) GPUs.
Also added a feature for PTX 6.4. While Clang/LLVM does not generate
any PTX instructions that need it, we still need to pass it through to
ptxas in order to be able to compile code that uses the new 'mma'
instruction as inline assembly (e.g used by NVIDIA's CUTLASS library
https://github.com/NVIDIA/cutlass/blob/master/cutlass/arch/mma.h#L101)
Differential Revision: https://reviews.llvm.org/D60279 — tra / detail - [PGO] Fix buildbot failure in 359215
Revert the part of changes in r359215 that failing in some platforms.
I will re-enable them later. — xur / detail - [analyzer] Add FIXMEs for alpha.unix.cstring.OutOfBounds false positives.
Caused by incorrect strlcat() modeling in r332303,
cf. https://bugs.llvm.org/show_bug.cgi?id=37687#c8 — dergachev / detail - Skip type units/type uniquing when we know we're only emitting the type once (vtable-based emission when triggered by a strong vtable, with -fno-standalone-debug)
(this would regress size without a corresponding LLVM change that avoids
putting other user defined types inside type units when they aren't in
their own type units - instead emitting declarations inside the type
unit and a definition in the primary CU)
Reviewers: aprantl
Differential Revision: https://reviews.llvm.org/D61079 — dblaikie / detail - [Windows] Separate elements in -print-search-dirs with semicolons
Path lists on windows should always be separated by semicolons, not
colons. Reuse llvm::sys::EnvPathSeparator for this purpose (as that's
also a path list that is separated in the same way).
Alternatively, this could just be a local ifdef _WIN32 in this function,
or generalizing the existing EnvPathSeparator to e.g. a
llvm::sys::path::PathListSeparator?
Differential Revision: https://reviews.llvm.org/D61121 — mstorsjo / detail - [analyzer][UninitializedObjectChecker] PR41590: Regard _Atomic types as primitive
https://bugs.llvm.org/show_bug.cgi?id=41590
For the following code snippet, UninitializedObjectChecker crashed:
struct MyAtomicInt {
_Atomic(int) x;
MyAtomicInt() {}
};
void entry() {
MyAtomicInt b;
}
The problem was that _Atomic types were not regular records, unions,
dereferencable or primitive, making the checker hit the llvm_unreachable at
lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObjectChecker.cpp:347.
The solution is to regard these types as primitive as well. The test case shows
that with this addition, not only are we able to get rid of the crash, but we
can identify x as uninitialized.
Differential Revision: https://reviews.llvm.org/D61106 — szelethus / detail - DebugInfo: Fix bitrotted test case
This test was updated with some CHECK suffix variants, but dropped
checking for the unsuffixed 'CHECK' — dblaikie / detail - creduce-clang-crash: add -F flag to grep to avoid interpreting string as regex — akhuang / detail
- [PGO] Enable InstrProf lowering for Clang PGO instrumentation in the new pass manager
Currently InstrProf lowering is not enabled for Clang PGO instrumentation in
the new pass manager. The following command
"-fprofile-instr-generate -fexperimental-new-pass-manager ..." is broken.
This CL enables InstrProf lowering pass for Clang PGO instrumentation in the
new pass manager.
Differential Revision: https://reviews.llvm.org/D61138 — xur / detail - Fix bug 37903:MS ABI: handle inline static data member and inline variable as template static data member — jyu2 / detail
- [OPENMP] Improved check for the linear dependency in the non-rectangular
loop nests.
Added a checks that the initializer/condition expressions depend only
only of the single previous loop iteration variable. — abataev / detail - [OPENMP][AARCH64]Fix the test for declare simd, NFC.
Renamed function a01 in the test to fix possible problems with the git
hash match during testing. — abataev / detail - [Testing] Move clangd::Annotations to llvm testing support
Summary:
Annotations allow writing nice-looking unit test code when one needs
access to locations from the source code, e.g. running code completion
at particular offsets in a file. See comments in Annotations.cpp for
more details on the API.
Also got rid of a duplicate annotations parsing code in clang's code
complete tests.
Reviewers: gribozavr, sammccall
Reviewed By: gribozavr
Subscribers: mgorny, hiraditya, ioeric, MaskRay, jkorous, arphaman, kadircet, jdoerfert, cfe-commits, llvm-commits
Tags: #clang, #llvm
Differential Revision: https://reviews.llvm.org/D59814 — ibiryukov / detail - [NFC] test commit removing excess line — nik / detail
- [PowerPC][NFC]Update licence to Apache 2 — jsji / detail
- Fix typo in comment in r312851.
Thanks to Nico Weber for pointing this out! — rsmith / detail - PR41427: This has apparently been fixed already, just add a regression
test. — rsmith / detail - [codeview] Fix symbol names for dynamic initializers and atexit stubs
Summary:
Add a new variant to GlobalDecl for these so that we can detect them
more easily during debug info emission and handle them appropriately.
Reviewers: rsmith, rjmccall, jyu2
Subscribers: aprantl, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D60930 — rnk / detail - [OPENMP]Initial support for non-rectangular loop nest.
Added basic semantic analysis for the non-rectangular loop nests for
OpenMP 5.0 support. — abataev / detail - clang-cl: List valid values for /std: in /? output
Differential Revision: https://reviews.llvm.org/D61029 — nico / detail - Use llvm::stable_sort — maskray / detail
- Add 'REQUIRES: shell' to verbose-output-quoting.c
The lit shell couldn't handle these run lines. — hans / detail - [clang][HeaderSuggestion] Handle the case of dotdot with an absolute path
Summary:
Include insertion in clangd was inserting absolute paths when the
include directory was an absolute path with a double dot. This patch makes sure
double dots are handled both with absolute and relative paths.
Reviewers: sammccall
Subscribers: ilya-biryukov, ioeric, jkorous, arphaman, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D60873 — kadircet / detail - Fix unquoted spaces in args in clang --verbose output
The behaviour of not quoting spaces appears to have been introduced by
mistake in r190620.
Patch by Brad Moody!
Differential revision: https://reviews.llvm.org/D60997 — hans / detail - Revert r359048: C++ DR2387: a variable template declared wthi
The change breaks libc++ with the follwing error:
In file included from valarray:4:
.../include/c++/v1/valarray:1062:60: error: explicit instantiation declaration of 'valarray<_Tp>' with internal linkage
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS valarray<size_t>::valarray(size_t))
^
.../include/c++/v1/valarray:1063:60: error: explicit instantiation declaration of '~valarray<_Tp>' with internal linkage
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS valarray<size_t>::~valarray()) — ibiryukov / detail - [clang][HeaderSearch] Make sure there are no backslashes in suggestedPath
Reviewers: sammccall
Differential Revision: https://reviews.llvm.org/D60995 — kadircet / detail - [Builtins] Implement __builtin_is_constant_evaluated for use in C++2a
Summary:
This patch implements `__builtin_is_constant_evaluated` as specifier by [P0595R2](https://wg21.link/p0595r2). It is built on the back of Bill Wendling's work for `__builtin_constant_p()`.
More tests to come, but early feedback is appreciated.
I plan to implement warnings for common mis-usages like those belowe in a following patch:
```
void foo(int x) {
if constexpr (std::is_constant_evaluated())) { // condition is always `true`. Should use plain `if` instead.
foo_constexpr(x);
} else {
foo_runtime(x);
}
}
```
Reviewers: rsmith, MaskRay, bruno, void
Reviewed By: rsmith
Subscribers: dexonsmith, zoecarver, fdeazeve, kristina, cfe-commits
Differential Revision: https://reviews.llvm.org/D55500 — ericwf / detail - Revert r350917 "[Sema] If CheckPlaceholderExpr rewrites the initializer
of an auto"
This commit changed the initializer expression passed into
initialization (stripping off an enclosing pair of parentheses or
braces) and subtly changing the meaning of programs, typically by
inserting bogus calls to copy constructors.
See the added testcase in test/SemaCXX/cxx1y-init-captures.cpp for an
example of the breakage. — rsmith / detail - Fix interactions between __builtin_constant_p and constexpr to match
current trunk GCC.
GCC permits information from outside the operand of
__builtin_constant_p (but in the same constant evaluation context) to be
used within that operand; clang now does so too. A few other minor
deviations from GCC's behavior showed up in my testing and are also
fixed (matching GCC):
* Clang now supports nullptr_t as the argument type for
__builtin_constant_p
* Clang now returns true from __builtin_constant_p if called with a
null pointer
* Clang now returns true from __builtin_constant_p if called with an
integer cast to pointer type — rsmith / detail - Fix test after r359009 on platforms where %ms_abi_triple is 32-bit — nico / detail
- Fixes in creduce-clang-crash.py for clang crash message parsing and reading the command from the repro script. — akhuang / detail
- Add missing diagnostic for anonymous struct/union definitions that don't
introduce any names. — rsmith / detail - Improve -Wuninitialized warning under ARC for block variables that are
recursively captured.
Under ARC, a block variable is zero-initialized when it is recursively
captured by the block literal initializer.
rdar://problem/11022762 — ahatanak / detail - C++ DR2387: a variable template declared wtih (or instantiated with) a
const-qualified type is not implicitly given internal linkage. But a
variable template declared 'static' is. — rsmith / detail - Move setTargetAttributes after setGVProperties in SetFunctionAttributes
AMDGPU currently relies on global properties being set before
setTargetProperties is called. Existing targets like MIPS which rely on
setTargetProperties do not rely on the current behavior, so this patch
moves the call later in SetFunctionAttributes.
Differential Revision: https://reviews.llvm.org/D60967 — scott.linder / detail - [analyzer] Fix macro names in diagnostics within bigger macros.
If macro "CHECK_X(x)" expands to something like "if (x != NULL) ...",
the "Assuming..." note no longer says "Assuming 'x' is equal to CHECK_X".
Differential Revision: https://reviews.llvm.org/D59121 — dergachev / detail - Re-apply r357823 "[Lexer] NFC: Fix an off-by-one bug in getAsCharRange()."
It now comes with a follow-up fix for the clients of this API
in clangd and clang-tidy.
Differential Revision: https://reviews.llvm.org/D59977 — dergachev / detail - Revert "[MS] Emit S_HEAPALLOCSITE debug info" because of ToTWin64(db)
buildbot failure.
This reverts commit d07d6d617713bececf57f3547434dd52f0f13f9e and
c774f687b6880484a126ed3e3d737e74c926f0ae. — akhuang / detail - [clang-format] Fix bug in reflow of block comments containing CR/LF
Fix PR36119
Differential Revision: https://reviews.llvm.org/D60996 — owenpan / detail - [ThinLTO] Pass down opt level to LTO backend and handle -O0 LTO in new PM
Summary:
The opt level was not being passed down to the ThinLTO backend when
invoked via clang (for distributed ThinLTO).
This exposed an issue where the new PM was asserting if the Thin or
regular LTO backend pipelines were invoked with -O0 (not a new issue,
could be provoked by invoking in-process *LTO backends via linker using
new PM and -O0). Fix this similar to the old PM where -O0 only does the
necessary lowering of type metadata (WPD and LowerTypeTest passes) and
then quits, rather than asserting.
Reviewers: xur
Subscribers: mehdi_amini, inglorion, eraman, hiraditya, steven_wu, dexonsmith, cfe-commits, llvm-commits, pcc
Tags: #clang, #llvm
Differential Revision: https://reviews.llvm.org/D61022 — tejohnson / detail - [APSInt][OpenMP] Fix isNegative, etc. for unsigned types
Without this patch, APSInt inherits APInt::isNegative, which merely
checks the sign bit without regard to whether the type is actually
signed. isNonNegative and isStrictlyPositive call isNegative and so
are also affected.
This patch adjusts APSInt to override isNegative, isNonNegative, and
isStrictlyPositive with implementations that consider whether the type
is signed.
A large set of Clang OpenMP tests are affected. Without this patch,
these tests assume that `true` is not a valid argument for clauses
like `collapse`. Indeed, `true` fails APInt::isStrictlyPositive but
not APSInt::isStrictlyPositive. This patch adjusts those tests to
assume `true` should be accepted.
This patch also adds tests revealing various other similar fixes due
to APSInt::isNegative calls in Clang's ExprConstant.cpp and
SemaExpr.cpp: `++` and `--` overflow in `constexpr`, evaluated object
size based on `alloc_size`, `<<` and `>>` shift count validation, and
OpenMP array section validation.
Reviewed By: lebedev.ri, ABataev, hfinkel
Differential Revision: https://reviews.llvm.org/D59712 — jdenny / detail - MS ABI: Support mangling op<=> now that MSVC 2019 has a mangling — nico / detail
- Fix "-Wimplicit-fallthrough" warning. NFCI. — rksimon / detail
- [Analyzer] Second fix for last commit for IteratorChecker
A variable was redeclared instead of assigned in an internal
block, leaving the original uninitialized. This is fixed now. — baloghadamsoftware / detail - [analyzer][CrossTU] Extend CTU to VarDecls with initializer
Summary:
The existing CTU mechanism imports `FunctionDecl`s where the definition is available in another TU. This patch extends that to VarDecls, to bind more constants.
- Add VarDecl importing functionality to CrossTranslationUnitContext
- Import Decls while traversing them in AnalysisConsumer
- Add VarDecls to CTU external mappings generator
- Name changes from "external function map" to "external definition map"
Reviewers: NoQ, dcoughlin, xazax.hun, george.karpenkov, martong
Reviewed By: xazax.hun
Subscribers: Charusso, baloghadamsoftware, mikhail.ramalho, Szelethus, donat.nagy, dkrupp, george.karpenkov, mgorny, whisperity, szepet, rnkovacs, a.sidorin, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D46421 — r.stahl / detail - [Analyzer] Fix for previous commit
A compilation warning was in my previous commit which broke the buildbot
because it is using `-Werror` for compilation. This patch fixes this
issue. — baloghadamsoftware / detail - [PowerPC] Fix test with -fno-discard-value-names after rC358949
For the clang driver, -DLLVM_ENABLE_ASSERTIONS=off builds default to discard value names. — maskray / detail - [Analyzer] Instead of recording comparisons in interator checkers do an eager state split
Currently iterator checkers record comparison of iterator positions
and process them for keeping track the distance between them (e.g.
whether a position is the same as the end position). However this
makes some processing unnecessarily complex and it is not needed at
all: we only need to keep track between the abstract symbols stored
in these iterator positions. This patch changes this and opens the
path to comparisons to the begin() and end() symbols between the
container (e.g. size, emptiness) which are stored as symbols, not
iterator positions. The functionality of the checker is unchanged.
Differential Revision: https://reviews.llvm.org/D53701 — baloghadamsoftware / detail - [PowerPC] [Clang] Port MMX intrinsics and basic test cases to Power
Port mmintrin.h which include x86 MMX intrinsics implementation to PowerPC platform (using Altivec).
To make the include process correct, PowerPC's toolchain class is overrided to insert new headers directory (named ppc_wrappers) into the path. Basic test cases for several intrinsic functions are added.
The header is mainly developed by Steven Munroe, with contributions from Paul Clarke, Bill Schmidt, Jinsong Ji and Zixuan Wu.
Reviewed By: Jinsong Ji
Differential Revision: https://reviews.llvm.org/D59924 — chaofan / detail - [analyzer] Unbreak body farms in presence of multiple declarations.
When growing a body on a body farm, it's essential to use the same redeclaration
of the function that's going to be used during analysis. Otherwise our
ParmVarDecls won't match the ones that are used to identify argument regions.
This boils down to trusting the reasoning in AnalysisDeclContext. We shouldn't
canonicalize the declaration before farming the body because it makes us not
obey the sophisticated decision-making process of AnalysisDeclContext.
Differential Revision: https://reviews.llvm.org/D60899 — dergachev / detail - [analyzer] PR41335: Fix crash when no-store event is in a body-farmed function.
Stuffing invalid source locations (such as those in functions produced by
body farms) into path diagnostics causes crashes.
Fix a typo in a nearby function name.
Differential Revision: https://reviews.llvm.org/D60808 — dergachev / detail - [analyzer] PR41269: Add a bit of C++ smart pointer modeling.
Implement cplusplus.SmartPtrModeling, a new checker that doesn't
emit any warnings but models methods of smart pointers more precisely.
For now the only thing it does is make `(bool) P` return false when `P`
is a freshly moved pointer. This addresses a false positive in the
use-after-move-checker.
Differential Revision: https://reviews.llvm.org/D60796 — dergachev / detail - [CMake] Replace the sanitizer support in runtimes build with multilib
This is a more generic solution; while the sanitizer support can be used
only for sanitizer instrumented builds, the multilib support can be used
to build other variants such as noexcept which is what we would like to use
in Fuchsia.
The name CMake target name uses the target name, same as for the regular
runtimes build and the name of the multilib, concatenated with '+'. The
libraries are installed in a subdirectory named after the multilib.
Differential Revision: https://reviews.llvm.org/D60926 — phosek / detail - [c++2a] Implement semantic restrictions for 'export' declarations. — rsmith / detail
- [VerifyDiagnosticConsumer] Document -verify=<prefixes> in doxygen
Previously, it was only documented by `-cc1 -help`, so people weren't
aware of it, as discussed in D60732.
Reviewed By: Charusso, NoQ
Differential Revision: https://reviews.llvm.org/D60845 — jdenny / detail - [ASTMatchers] Introduce Objective-C matchers `isClassMessage`, `isClassMethod`, and `isInstanceMethod`
Summary:
isClassMessage is an equivalent to isInstanceMessage for ObjCMessageExpr, but matches message expressions to classes.
isClassMethod and isInstanceMethod check whether a method declaration (or definition) is for a class method or instance method (respectively).
Contributed by @mywman!
Reviewers: benhamilton, klimek, mwyman
Reviewed By: benhamilton, mwyman
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D60920 — benhamilton / detail - [sema][objc] Minor refactor to OverrideSearch. NFCI.
Summary:
* Removed a member that was only used during construction.
* Use range-based for iteration when accessing the result of the search.
* Require an `ObjCMethodDecl` reference upon construction of an
* Constify.
Reviewers: rjmccall
Reviewed By: rjmccall
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D60850 — mattd / detail - [Sema] ADL: Associated namespaces for class types and enumeration types (CWG 1691)
CWG 1691 changed the definition of the namespaces associated with a class
type or enumeration type.
For a class type, the associated namespaces are the innermost enclosing
namespaces of the associated classes. For an enumeration type, the associated
namespace is the innermost enclosing namespace of its declaration.
This also fixes CWG 1690 and CWG 1692.
Differential Revision: https://reviews.llvm.org/D60573
Reviewed By: rjmccall, rsmith — brunoricci / detail - [Sema][NFC] Add more tests for the behavior of argument-dependent name lookup
The goal here is to exercise each rule in [basic.lookup.argdep] at least once.
These new tests expose what I believe are 2 issues:
1. CWG 1691 needs to be implemented (p2: [...] Its associated namespaces are
the innermost enclosing namespaces of its associated classes [...]) The
corresponding tests are adl_class_type::X2 and adl_class_type::X5.
2. The end of paragraph 2 ([...] Additionally, if the aforementioned set of
overloaded functions is named with a template-id, its associated classes
and namespaces also include those of its type template-arguments and its
template template-arguments.) is not implemented. Closely related, the
restriction on non-dependent parameter types in this same paragraph needs
to be removed. The corresponding tests are in adl_overload_set (both issues
are from CWG 997).
Differential Revision: https://reviews.llvm.org/D60570
Reviewed By: riccibruno, Quuxplusone — brunoricci / detail - [analyzer][www] Moving MoveChecker out of alpha is no longer an open project. — szelethus / detail
- Attempt to fix LLVM_ENABLE_THREADS=OFF build after r358665 — nico / detail
- [Sema][MSVC] Fix bogus microsoft-pure-definition warning on member function of class template
Clang emits a warning when using a pure specifier =0 in a function definition
at class scope (a MS-specific construct), when using -fms-extensions.
However, to detect this, it was using FD->isCanonicalDecl() on function
declaration, which was also detecting out-of-class definition of member
functions of class templates. Fix this by using !FD->isOutOfLine() instead.
Fixes PR21334.
Differential Revision: https://reviews.llvm.org/D29707
Reviewed By: riccibruno
Reviewers: rnk, riccibruno
Patch By: Rudy Pons — brunoricci / detail - [analyzer] Move UninitializedObjectChecker out of alpha
Moved UninitializedObjectChecker from the 'alpha.cplusplus' to the
'optin.cplusplus' package.
Differential Revision: https://reviews.llvm.org/D58573 — szelethus / detail - Modules: Adopt template parameters for variable templates to set their decl context correctly
Exposed by a related bug about visibility of default arguments of nested
templates - without the correct decl context, default template
parameters of variable templates nested in classes would have incorrect
visibility computed. — dblaikie / detail - Modules: Search for a visible definition of the decl context when computing visibility of a default template parameter
The code is/was already correct for the case where a parameter is a
parameter of its enclosing lexical DeclContext (functions and classes).
But for other templates (alias and variable templates) they don't create
their own scope to be members of - in those cases, they parameter should
be considered visible if any definition of the lexical decl context is
visible.
[this should cleanup the failure on the libstdc++ modules buildbot]
[this doesn't actually fix the variable template case for a
secondary/compounding reason (its lexical decl context is incorrectly
considered to be the translation unit)]
Test covers all 4 kinds of templates with default args, including a
regression test for the still broken variable template case.
Reviewers: rsmith
Differential Revision: https://reviews.llvm.org/D60892 — dblaikie / detail - [MS] Emit S_HEAPALLOCSITE debug info
Summary:
This emits labels around heapallocsite calls and S_HEAPALLOCSITE debug
info in codeview. Currently only changes FastISel, so emitting labels still
needs to be implemented in SelectionDAG.
Reviewers: hans, rnk
Subscribers: aprantl, hiraditya, cfe-commits, llvm-commits
Tags: #clang, #llvm
Differential Revision: https://reviews.llvm.org/D60800 — akhuang / detail - Reapply "[analyzer] Introduce a simplified API for adding custom path notes."
This reapplies commit r357323, fixing memory leak found by LSan.
Differential Revision: https://reviews.llvm.org/D58367 — dergachev / detail - [MSVC] If unable to find link.exe from a MSVC installation, look for link.exe next to cl.exe
Previously, if the MSVC installation isn't detected properly, clang
will later just fail to execute link.exe.
This improves using clang in msvc mode on linux, where one intentionally
might not want to point clang to the MSVC installation itself (which
isn't executable as such), but where a link.exe named wine wrapper is
available in the path next to a cl.exe named wine wrapper.
Differential Revision: https://reviews.llvm.org/D60094 — mstorsjo / detail - Enable frame pointer elimination for OpenBSD on powerpc. — brad / detail
- [OPENMP][NVPTX] target [teams distribute] simd maybe run without
runtime.
target [teams distribute] simd costructs do not require full runtime for
the correct execution, we can run them without full runtime. — abataev / detail - Update to use PipelineTuningOptions. Corresponds to llvm change: D59723. — asbirlea / detail
- Debian: Add two missing version code in sid — sylvestre / detail
- Add support of the future Debian (Debian 11 - Bullseye)
https://wiki.debian.org/DebianBullseye — sylvestre / detail - Add support of the next Ubuntu (Ubuntu 19.10 - Eoan EANIMAL) — sylvestre / detail
- [LTO] Add plumbing to save stats during LTO on Darwin.
Gold and ld on Linux already support saving stats, but the
infrastructure is missing on Darwin. Unfortunately it seems like the
configuration from lib/LTO/LTO.cpp is not used.
This patch adds a new LTOStatsFile option and adds plumbing in Clang to
use it on Darwin, similar to the way remarks are handled.
Currnetly the handling of LTO flags seems quite spread out, with a bunch
of duplication. But I am not sure if there is an easy way to improve
that?
Reviewers: anemet, tejohnson, thegameg, steven_wu
Reviewed By: steven_wu
Differential Revision: https://reviews.llvm.org/D60516 — fhahn / detail - [analyzer][NFC] Reimplement checker options
TL;DR:
* Add checker and package options to the TableGen files
* Added a new class called CmdLineOption, and both Package and Checker recieved
a list<CmdLineOption> field.
* Added every existing checker and package option to Checkers.td.
* The CheckerRegistry class
* Received some comments to most of it's inline classes
* Received the CmdLineOption and PackageInfo inline classes, a list of
CmdLineOption was added to CheckerInfo and PackageInfo
* Added addCheckerOption and addPackageOption
* Added a new field called Packages, used in addPackageOptions, filled up in
addPackage
Detailed description:
In the last couple months, a lot of effort was put into tightening the
analyzer's command line interface. The main issue is that it's spectacularly
easy to mess up a lenghty enough invocation of the analyzer, and the user was
given no warnings or errors at all in that case.
We can divide the effort of resolving this into several chapters:
* Non-checker analyzer configurations:
Gather every analyzer configuration into a dedicated file. Emit errors for
non-existent configurations or incorrect values. Be able to list these
configurations. Tighten AnalyzerOptions interface to disallow making such
a mistake in the future.
* Fix the "Checker Naming Bug" by reimplementing checker dependencies:
When cplusplus.InnerPointer was enabled, it implicitly registered
unix.Malloc, which implicitly registered some sort of a modeling checker
from the CStringChecker family. This resulted in all of these checker
objects recieving the name "cplusplus.InnerPointer", making AnalyzerOptions
asking for the wrong checker options from the command line:
cplusplus.InnerPointer:Optimisic
istead of
unix.Malloc:Optimistic.
This was resolved by making CheckerRegistry responsible for checker
dependency handling, instead of checkers themselves.
* Checker options: (this patch included!)
Same as the first item, but for checkers.
(+ minor fixes here and there, and everything else that is yet to come)
There were several issues regarding checker options, that non-checker
configurations didn't suffer from: checker plugins are loaded runtime, and they
could add new checkers and new options, meaning that unlike for non-checker
configurations, we can't collect every checker option purely by generating code.
Also, as seen from the "Checker Naming Bug" issue raised above, they are very
rarely used in practice, and all sorts of skeletons fell out of the closet while
working on this project.
They were extremely problematic for users as well, purely because of how long
they were. Consider the following monster of a checker option:
alpha.cplusplus.UninitializedObject:CheckPointeeInitialization=false
While we were able to verify whether the checker itself (the part before the
colon) existed, any errors past that point were unreported, easily resulting
in 7+ hours of analyses going to waste.
This patch, similarly to how dependencies were reimplemented, uses TableGen to
register checker options into Checkers.td, so that Checkers.inc now contains
entries for both checker and package options. Using the preprocessor,
Checkers.inc is converted into code in CheckerRegistry, adding every builtin
(checkers and packages that have an entry in the Checkers.td file) checker and
package option to the registry. The new addPackageOption and addCheckerOption
functions expose the same functionality to statically-linked non-builtin and
plugin checkers and packages as well.
Emitting errors for incorrect user input, being able to list these options, and
some other functionalies will land in later patches.
Differential Revision: https://reviews.llvm.org/D57855 — szelethus / detail - [analyzer] Fix an assertion failure if plugins added dependencies
Ideally, there is no reason behind not being able to depend on checkers that
come from a different plugin (or on builtin checkers) -- however, this is only
possible if all checkers are added to the registry before resolving checker
dependencies. Since I used a binary search in my addDependency method, this also
resulted in an assertion failure (due to CheckerRegistry::Checkers not being
sorted), since the function used by plugins to register their checkers
(clang_registerCheckers) calls addDependency.
This patch resolves this issue by only noting which dependencies have to
established when addDependency is called, and resolves them at a later stage
when no more checkers are added to the registry, by which point
CheckerRegistry::Checkers is already sorted.
Differential Revision: https://reviews.llvm.org/D59461 — szelethus / detail - [LibTooling] Fix -Wsign-compare after r358697 — bjope /