- Feb 18, 2021
-
-
Hsiangkai Wang authored
For masked segment load, the destination register should not overlap with mask register. It could not be V0. In the original implementation, there is no segment load/store register class without V0. In this patch, I added these register classes and modify `GetVRegNoV0` to get the correct one. Differential Revision: https://reviews.llvm.org/D96937
-
Hsiangkai Wang authored
Differential Revision: https://reviews.llvm.org/D96923
-
Paul C. Anagnostopoulos authored
Rework template argument checking so that all arguments are type-checked and cast if necessary. Add a test. Differential Revision: https://reviews.llvm.org/D96416
-
Jonas Otto authored
Clang-tidy seems to output color only when printing directly to terminal, but an option to force color-output has been added in https://reviews.llvm.org/D7947
-
David Green authored
It appears that pointer types were causing issues for the min/max cost code in getIntrinsicInstrCost. This makes sure that when matching icmp/select to a min/max, we only do that for normal int or float types.
-
Alexander Belyaev authored
`subtensor_insert` was used instead of `linalg.subtensor_yield` to make this PR smaller. Verification will be added in a follow-up PR. Differential Revision: https://reviews.llvm.org/D96943
-
Stefan Pintilie authored
Added -mrop-protection for Power PC to turn on codegen that provides some protection from ROP attacks. The option is off by default and can be turned on for Power 8, Power 9 and Power 10. This patch is for the option only. The feature will be implemented by a later patch. Reviewed By: amyk Differential Revision: https://reviews.llvm.org/D96512
-
Kirill Bobyrev authored
Now, given `template <typename T> foo() {}` when user types `fo^<int>()` the completion snippet will not contain `<int>()`. Also, when the next token is opening parenthesis (`(`) and completion snippet contains template argument list, it is still emitted. This patch complements D81380. Related issue: https://github.com/clangd/clangd/issues/387 Reviewed By: kadircet Differential Revision: https://reviews.llvm.org/D89870 -
Alexander Belyaev authored
This commit introduced a cyclic dependency: Memref dialect depends on Standard because it used ConstantIndexOp. Std depends on the MemRef dialect in its EDSC/Intrinsics.h Working on a fix. This reverts commit 8aa6c376.
-
David Green authored
A v8i32 compare will produce a v8i1 predicate, but during codegen the v8i32 will be split into two v4i32, potentially requiring two v4i1 predicates to be merged into a single v8i1. Because this merging of two v4i1's into a v8i1 is very expensive, we need to make the cost of the compare equally high. This patch adds the cost of that to ARMTTIImpl::getCmpSelInstrCost. Because we don't know whether the user of the predicate can be split, and the cost model is mostly pre-instruction, we may be pessimistic but that should only be for larger and legal types. This also adds min/max detection to the costmodel where it can be detected, to keep those in line with the cost of simple min/max instructions. Otherwise for the most part, costs that were already expensive have become more expensive. Differential Revision: https://reviews.llvm.org/D96692
-
Florian Hahn authored
-
Simon Pilgrim authored
-
Faris Rehman authored
Add the following options: * -fdebug-dump-symbols * -fdebug-dump-parse-tree * -fdebug-dump-provenance Summary of changes: - Add 3 new frontend actions: DebugDumpSymbolsAction, DebugDumpParseTreeAction and DebugDumpProvenanceAction - Add a unique pointer to the Semantics instance created in PrescanAndSemaAction - Move fatal semantic error reporting to its own method, FrontendActions#reportFatalSemanticErrors - Port most tests using `-fdebug-dump-symbols` and `-fdebug-dump-parse-tree` to the new driver if built, otherwise default to f18 Differential Revision: https://reviews.llvm.org/D96716
-
Sven van Haastregt authored
Supporting `printf` with `-fdeclare-opencl-builtins` would require special handling (for e.g. varargs and format attributes) for just this one function. Instead, move the `printf` declaration to the shared base header. Differential Revision: https://reviews.llvm.org/D96789
-
David Green authored
-
Benjamin Kramer authored
NFCI
-
Julian Gross authored
Create the memref dialect and move several dialect-specific ops without dependencies to other ops from std dialect to this dialect. Moved ops: AllocOp -> MemRef_AllocOp AllocaOp -> MemRef_AllocaOp DeallocOp -> MemRef_DeallocOp MemRefCastOp -> MemRef_CastOp GetGlobalMemRefOp -> MemRef_GetGlobalOp GlobalMemRefOp -> MemRef_GlobalOp PrefetchOp -> MemRef_PrefetchOp ReshapeOp -> MemRef_ReshapeOp StoreOp -> MemRef_StoreOp TransposeOp -> MemRef_TransposeOp ViewOp -> MemRef_ViewOp The roadmap to split the memref dialect from std is discussed here: https://llvm.discourse.group/t/rfc-split-the-memref-dialect-from-std/2667 Differential Revision: https://reviews.llvm.org/D96425
-
Fraser Cormack authored
This patch adds support for INSERT_SUBVECTOR and EXTRACT_SUBVECTOR (nominally where both operands are scalable vector types) where the vector, subvector, and index align sufficiently to allow decomposition to subregister manipulation: * For extracts, the extracted subvector must correctly align with the lower elements of a vector register. * For inserts, the inserted subvector must be at least one full vector register, and correctly align as above. This approach should work for fixed-length vector insertion/extraction too, but that will come later. Reviewed By: craig.topper, khchen, arcbbb Differential Revision: https://reviews.llvm.org/D96873
-
Fraser Cormack authored
This patch fixes a codegen crash introduced in fde24661, where the DAGCombiner started generating optimized MULH[SU] or [SU]MUL_LOHI nodes unless the target opted out. The AArch64 backend cannot currently select any of these nodes, so ensure that they are not generated in the first place. This issue was raised by @huihuiz in D94501. Reviewed By: paulwalker-arm Differential Revision: https://reviews.llvm.org/D96849
-
Djordje Todorovic authored
This reverts rG8ee7c7e0. One test is failing, I'll reland this as soon as possible.
-
Alex Hoppen authored
As suggested by Nico in https://reviews.llvm.org/D96049, move check for libproc from CMakeLists to config-ix.cmake Reviewed By: thakis Differential Revision: https://reviews.llvm.org/D96713 Note: Also removes the CMAKE_REQUIRED_LIBRARIES which doesn't appear to be necessary.
-
Djordje Todorovic authored
As discussed on the RFC [0], I am sharing the set of patches that enables checking of original Debug Info metadata preservation in optimizations. The proof-of-concept/proposal can be found at [1]. The implementation from the [1] was full of duplicated code, so this set of patches tries to merge this approach into the existing debugify utility. For example, the utility pass in the original-debuginfo-check mode could be invoked as follows: $ opt -verify-debuginfo-preserve -pass-to-test sample.ll Since this is very initial stage of the implementation, there is a space for improvements such as: - Add support for the new pass manager - Add support for metadata other than DILocations and DISubprograms [0] https://groups.google.com/forum/#!msg/llvm-dev/QOyF-38YPlE/G213uiuwCAAJ [1] https://github.com/djolertrk/llvm-di-checker Differential Revision: https://reviews.llvm.org/D82545
-
Chen Zheng authored
This patch makes StorageMappingClass/SymbolType member optional in class MCSectionXCOFF. Non-csect sections like debug sections have no such properties. Reviewed By: hubert.reinterpretcast Differential Revision: https://reviews.llvm.org/D96641
-
Haojian Wu authored
OpaqueValueExpr doesn't correspond to the concrete syntax, it has invalid source location, ignore them. Reviewed By: kbobyrev Differential Revision: https://reviews.llvm.org/D96112
-
Yang Fan authored
GCC warning: ``` [3397/3703] Building CXX object tools/llvm-profgen/CMakeFiles/llvm-profgen.dir/llvm-profgen.cpp.o In file included from /llvm-project/llvm/include/llvm/ADT/STLExtras.h:19, from /llvm-project/llvm/include/llvm/ADT/StringRef.h:12, from /llvm-project/llvm/include/llvm/ADT/Twine.h:13, from /llvm-project/llvm/tools/llvm-profgen/ErrorHandling.h:12, from /llvm-project/llvm/tools/llvm-profgen/llvm-profgen.cpp:13: /llvm-project/llvm/include/llvm/ADT/Optional.h: In instantiation of ‘void llvm::optional_detail::OptionalStorage<T, <anonymous> >::emplace(Args&& ...) [with Args = {const std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, llvm::sampleprof::LineLocation>}; T = const std::pair<std::__cxx11::basic_string<char>, llvm::sampleprof::LineLocation>; bool <anonymous> = false]’: /llvm-project/llvm/include/llvm/ADT/Optional.h:79:7: ... -
Alex Zinenko authored
The functions translating enums to LLVM IR are generated in a single file included in many places, not all of which use all translations. Generate functions with "unused" attribute to silence compiler warnings. Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D96880
-
Juneyoung Lee authored
-
Andy Wingo authored
For relocatable output that needs the indirect function table, identify the well-known function table. This allows us to properly fix the limits on the imported table, and in a followup will allow the element section to reference the indirect function table even if it's not assigned to table number 0. Adapt tests for import reordering. Differential Revision: https://reviews.llvm.org/D96770
-
Andy Wingo authored
Before, --importTable forced the creation of an indirect function table, whether it was needed or not. Now it only imports a table if needed. Differential Revision: https://reviews.llvm.org/D96872
-
Raphael Isemann authored
[lldb][NFC] Silence missing case warnings in TypeSystemClang::GetTypeBitAlign due to new RISC-V V types Those types were added in D92715. This just silences the warning but doesn't actually add support for those types to LLDB.
-
Kazu Hirata authored
-
Kazu Hirata authored
This patch eliminates pesky "No newline at end of file" messages from git diff.
-
Kazu Hirata authored
-
Jason Molenda authored
Add a new state for UnwindPlan::Row which indicates that any register not listed is not defined, and should not be found in stack frames newer than this one and passed up the stack. Mostly intended for use with architectural default unwind plans that are used for jitted stack frames, where we have no unwind information or start address. lldb has no way to tell if registers were spilled in the jitted frame & overwritten, so passing register values up the stack is not safe to show the user. Architectural default unwind plans are also used as a fast unwind plan on x86_64 in particular, and are used as the fallback unwind plans when lldb thinks it may be able to work around a problem which causes the unwinder to stop walking the stack early. For fast unwind plans, when we don't find a register location in the arch default unwind plan, we fall back to computing & using the full unwind plan. One small part of this patch is to know that a register marked as Undefined in the fast unwind plan is a special case, and we should continue on to the full unwind plan to find what the real unwind rule is for this register. Differential Revision: https://reviews.llvm.org/D96829 <rdar://problem/70398009>
-
Fangrui Song authored
To make a kind of metadata section usage work, we want to drop the `__start_/__stop_ references retain C identifier name sections` rule from LLD (see D96914). If an application has no `__llvm_prf_data` input section surviving --gc-sections, LLD will error for undefined hidden `{__start_,__stop_}__llvm_prf_*` from `libclang_rt.profile-*`. Other `__llvm_prf_*` sections have similar issues. Making the references weak can address the problem. This probably enables the opportunity to drop zero size dummy sections in `InstrProfilingPlatformLinux.c`. Reviewed By: davidxl Differential Revision: https://reviews.llvm.org/D96936 -
Fangrui Song authored
ST_Data is used to model BFD `BFD_OBJECT`. A STT_TLS symbol does not have the `BFD_OBJECT` flag in BFD. This makes sense because a STT_TLS symbol is like in a different address space, normal data/object properties do not apply on them. With this change, a STT_TLS symbol will not be displayed as 'O'. This new behavior matches objdump. Differential Revision: https://reviews.llvm.org/D96735
-
Martin Storsjö authored
The root_path function has to be changed to return the parsed bit as-is; otherwise a path like "//net" gets a root path of "//net/", as the root name, "//net", gets the root directory (an empty string) appended, forming "//net/". (The same doesn't happen for the root dir "c:" though.) Differential Revision: https://reviews.llvm.org/D91178
-
Yang Fan authored
GCC warning: ``` /llvm-project/llvm/lib/MC/ELFObjectWriter.cpp: In member function ‘uint64_t {anonymous}::ELFWriter::writeObject(llvm::MCAssembler&, const llvm::MCAsmLayout&)’: /llvm-project/llvm/lib/MC/ELFObjectWriter.cpp:1137:38: warning: enumeral and non-enumeral type in conditional expression [-Wextra] 1137 | write(uint32_t(Group->isComdat() ? ELF::GRP_COMDAT : 0)); | ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ ``` -
Stanislav Mekhanoshin authored
Remove hsa-gfx90a-v3.s until D95638. It unexpectedly passes on s390x.
-
Yang Fan authored
GCC warning: ``` /llvm-project/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp: In member function ‘virtual llvm::MCSection* llvm::TargetLoweringObjectFileELF::getSectionForLSDA(const llvm::Function&, const llvm::MCSymbol&, const llvm::TargetMachine&) const’: /llvm-project/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp:871:8: warning: variable ‘IsComdat’ set but not used [-Wunused-but-set-variable] 871 | bool IsComdat = false; | ^~~~~~~~ ```
-