- Sep 01, 2021
-
-
serge-sans-paille authored
Setting -fvisibility=hidden when compiling Target libs has the advantage of not being intrusive on the codebase, but it also sets the visibility of all functions within header-only component like ADT. In the end, we end up with some symbols with hidden visibility within llvm dylib (through the target libs), and some with external visibility (through other libs). This paves the way for subtle bugs like https://reviews.llvm.org/D101972 This patch explicitly set the visibility of some classes to `default` so that `llvm::Any` related symbols keep a `default` visibility. Indeed a template function with `default` visibility parametrized by a type with `hidden` visibility is granted `hidden` visibility, and we don't want this for the uniqueness of `llvm::Any::TypeId`. Differential Revision: https://reviews.llvm.org/D108943
-
hsmahesha authored
This reverts commit 50ad3478. Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D109062
-
Kazu Hirata authored
-
Louis Dionne authored
There is a lot more we can do, in particular in <type_traits>, but this removes some workarounds that were gated on checking a specific compiler version. Differential Revision: https://reviews.llvm.org/D108923
-
Louis Dionne authored
Differential Revision: https://reviews.llvm.org/D109027
-
Louis Dionne authored
Clang used to support [[nodebug]] everywhere except on typedefs. Since we don't support such old Clangs anymore, we can get rid of _LIBCPP_NODEBUG_TYPE in favour of always using _LIBCPP_NODEBUG. Differential Revision: https://reviews.llvm.org/D108996
-
Louis Dionne authored
This doesn't impact the compile-time efficiency, but we get better diagnostics when an overload is disabled.
-
Teresa Johnson authored
We have a large compile showing occasional non-deterministic behavior that is due to DIArgList not being properly uniqued in some cases. I tracked this down to handleChangedOperands, for which there is a custom implementation for DIArgList, that does not take care of re-uniquing after updating the DIArgList Args, unlike the default version of handleChangedOperands for MDNode. Since the Args in the DIArgList form the key for the store, this seems to be occasionally breaking the lookup in that DenseSet. Specifically, when invoking DIArgList::get() from replaceVariableLocationOp, very occasionally it returns a new DIArgList object, when one already exists having the same exact Args pointers. This in turn causes a subsequent call to Instruction::isIdenticalToWhenDefined on those two otherwise identical DIArgList objects during a later pass to return false, leading to different IR in those rare cases. I modified DIArgList::handleChangedOperands to perform similar re-uniquing as the MDNode version used by other metadata node types. This also necessitated a change to the context destructor, since in some cases we end up with DIArgList as distinct nodes: DIArgList is the only metadata node type to have a custom dropAllReferences, so we need to invoke that version on DIArgList in the DistinctMDNodes store to clean it up properly. Differential Revision: https://reviews.llvm.org/D108968
-
Ivan Zhechev authored
Due to how the LIT deals with module files, this change stores and runs the scripts in their own temporary directory to prevent interference in-between different tests. It also makes ``test_symbols.py`` be more consistent with the other scripts. Reviewed By: Meinersbur, awarzynski Differential Revision: https://reviews.llvm.org/D107953
-
Jon Chesterfield authored
-
Andrej Korman authored
This change adds save-core functionality into the ObjectFileELF that enables saving minidump of a stopped process. This change is mainly targeting Linux running on x86_64 machines. Minidump should contain basic information needed to examine state of threads, local variables and stack traces. Full support for other platforms is not so far implemented. API tests are using LLDB's MinidumpParser. This relands commit aafa05e0, reverted in 1f986f60. Failed tests were fixed. Reviewed By: clayborg Differential Revision: https://reviews.llvm.org/D108233
-
Erich Keane authored
Discovered in SYCL, the field annotations were always cast to an i8*, which is an invalid bitcast for a pointer type with an address space. This patch makes sure that we create an intrinsic that takes a pointer to the correct address-space and properly do our casts. Differential Revision: https://reviews.llvm.org/D109003
-
Nico Weber authored
This reverts commit f0514a4d. Test fails on macOS: https://reviews.llvm.org/D107049#2976603
-
Joe Loser authored
`contiguous_iterator` requires the iterator type passed is either a pointer type or that the element type of the iterator is a complete object type. These constraints are not part of the current wording in defining the `contiguous_iterator` concept - adjust the concept to reflect this. Inspired from discussion at https://reviews.llvm.org/D108645. Reviewed By: #libc, ldionne Differential Revision: https://reviews.llvm.org/D108855
-
Florian Hahn authored
If MatchRegexp is an invalid regex, an error message will be printed using SourceManager::PrintMessage via AddRegExToRegEx. PrintMessage relies on the input being a StringRef into a string managed by SourceManager. At the moment, a StringRef to a std::string allocated in the caller of AddRegExToRegEx is passed. If the regex is invalid, this StringRef is passed to PrintMessage, where it will crash, because it does not point to a string managed via SourceMgr. This patch fixes the crash by turning MatchRegexp into a StringRef If we use MatchStr, we directly use that StringRef, which points into a string from SourceMgr. Otherwise, MatchRegexp gets assigned Format.getWildcardRegex(), which returns a std::string. To extend the lifetime, assign it to a std::string variable WildcardRegexp and assign MatchRegexp to a stringref to WildcardRegexp. WildcardRegexp should always be valid, so we should never have to print an error message via the SoureMgr I think. Fixes PR49319. Reviewed By: thopre Differential Revision: https://reviews.llvm.org/D109050
-
Joe Loser authored
Remove tasks listed that refer to papers or issues that are marked complete in `libcxx/docs/Status/Cxx17Papers.csv` or `libcxx/docs/Status/Cxx17Issues.csv` Reviewed By: #libc, ldionne Differential Revision: https://reviews.llvm.org/D108856
-
Joe Loser authored
Feature test macro for `__cpp_lib_is_nothrow_convertible` was introduced in 466df171 but the LWG issue was not marked as `Complete` in the docs. Also, fix the formatting of `Complete` for LWG 3348. Reviewed By: ldionne, #libc Differential Revision: https://reviews.llvm.org/D108964
-
Zahira Ammarguellat authored
Revert "[CLANG][PATCH][FPEnv] Add support for option -ffp-eval-method and extend #pragma float_control similarly" The intent of this patch is to add support of -fp-model=[source|double|extended] to allow the compiler to use a wider type for intermediate floating point calculations. As a side effect to that, the value of FLT_EVAL_METHOD is changed according to the pragma float_control. Unfortunately some issue was uncovered with this change in preprocessing. See details in https://reviews.llvm.org/D93769 . We are therefore reverting this patch until we find a way to reconcile the value of FLT_EVAL_METHOD, the pragma and the -E flow. This reverts commit 66ddac22.
-
David Sherwood authored
-
David Sherwood authored
This reverts commit aeb2bd68.
-
David Sherwood authored
-
Saiyedul Islam authored
nvlink does not support linking of cubin files archived in an archive. This tool extracts all the cubin files in the given device specific archive and pass them to nvlink. It is required for linking static device libraries for nvptx. Reviewed By: ye-luo Differential Revision: https://reviews.llvm.org/D108291
-
Vassil Vassilev authored
Original commit message:" The current infrastructure in lib/Interpreter has a tool, clang-repl, very similar to clang-interpreter which also allows incremental compilation. This patch moves clang-interpreter as a test case and drops it as conditionally built example as we already have clang-repl in place. Differential revision: https://reviews.llvm.org/D107049 " This patch also ignores ppc due to missing weak symbol for __gxx_personality_v0 which may be a feature request for the jit infrastructure. Also, adds a missing build system dependency to the orc jit.
-
Alexander Kornienko authored
-
Vignesh Balasubramanian authored
This is a continuation of the review: https://reviews.llvm.org/D100181 Creates a new directory "libompd" under openmp. "TargetValue" provides operational access to the OpenMP runtime memory for OMPD APIs. With TargetValue, using "pointer" a user can do multiple operations from casting, dereferencing to accessing an element for structure. The member functions are designed to concatenate the operations that are needed to access values from structures. e.g., _a[6]->_b._c would read like : TValue(ctx, "_a").cast("A",2) .getArrayElement(6).access("_b").cast("B").access("_c") For example: If you have a pointer "ThreadHandle" of a running program then you can access/retrieve "threadID" from the memory using TargetValue as below. TValue(context, thread_handle->th) /*__kmp_threads[t]->th*/ .cast("kmp_base_info_t") .access("th_info") /*__kmp_threads[t]->th.th_info*/ .cast("kmp_desc_t") .access("ds") /*__kmp_threads[t]->th.th_i...
-
Justas Janickas authored
Modifies OpenCL 3.0 optional core feature macro definitions so that they are set analogously in C++ for OpenCL 2021. This change aims to achieve compatibility between C++ for OpenCL 2021 and OpenCL 3.0. Differential Revision: https://reviews.llvm.org/D108704
-
Michał Górny authored
Temporarily remove breakpoints for the duration of vfork, in order to prevent them from triggering in the child process. Restore them once the server reports that vfork has finished and it is ready to resume execution. Differential Revision: https://reviews.llvm.org/D100267
-
Fangrui Song authored
SCEVPredicate has a friend declaration. The friend can technically call the protected destructor, so the warning is legitimate. Clang simply doesn't implement the friend check. Make the dtor virtual to fix the issue.
-
Fraser Cormack authored
s/Uexpected/Unexpected.
-
Christudasan Devadasan authored
Configure and use the TSFlags in TargetRegisterClass to have unique flags for VGPR and AGPR register classes. The vector register class queries like `hasVGPRs` will now become more efficient with just a bitwise operation. Reviewed By: rampitec Differential Revision: https://reviews.llvm.org/D108815
-
Kai Luo authored
Add support to load/store i128 atomically. Reviewed By: jsji Differential Revision: https://reviews.llvm.org/D105612
-
Michał Górny authored
This reverts commit 199344d8. It caused regressions on arm, as reported by lldb-arm-ubuntu buildbot.
-
Vassil Vassilev authored
This reverts commit 319ce980 because it fails on various platforms.
-
Sylvestre Ledru authored
Reviewed By: phosek, MaskRay Differential Revision: https://reviews.llvm.org/D108890
-
Jean Perier authored
The standard specifies that the form must be set to a default at the end of an open statement (C.7.4 point 2) where it was not specified. Only in the case of a pre-connected unit can the form be deferred until the first data transfer statement. Set back the default form setting in OpenStatementState::EndIoStatement that had been removed when deferring the pre-connected unit from setting in 199a623e. Also return "UNDEFINED" instead of "UNKNOWN" to the FORM inquiry when the form was not yet specified as defined in 12.10.2.12. Related test: syntax 215a216. Differential Revision: https://reviews.llvm.org/D108990
-
Luke authored
Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D108973
-
Michał Górny authored
Temporarily remove breakpoints for the duration of vfork, in order to prevent them from triggering in the child process. Restore them once the server reports that vfork has finished and it is ready to resume execution. Differential Revision: https://reviews.llvm.org/D100267
-
Anton Afanasyev authored
This test sometimes triggers failures during build testing. For instance, see: https://lab.llvm.org/buildbot/#/builders/52/builds/10161, details: https://lab.llvm.org/buildbot/#/builders/52/builds/10161/steps/5/logs/FAIL__Clang__check-time-trace-sections_cpp . AFAICT the time between driver calling and checking its time tracker output is not guaranteed to be stable and small: ``` > head -2 check-time-trace-sections.cpp // RUN: %clangxx -S -ftime-trace -ftime-trace-granularity=0 -o %T/check-time-trace-sections %s // RUN: cat %T/check-time-trace-sections.json | %python %S/check-time-trace-sections.py > clang -S -ftime-trace -ftime-trace-granularity=0 -o /tmp/check check-time-trace-sections.cpp > cat /tmp/check.json | python check-time-trace-sections.py > sleep 10 > cat /tmp/check.json | python check-time-trace-sections.py 'beginningOfTime' should represent the absolute time when the process has started > ``` The attribute `beginningOfTime` was introduced here: https://reviews.llvm.org/D78030 One can change "10 sec" value to something longer, but I believe it's enough just to check that `beginningOfTime` exists and is not later than current time. Differential Revision: https://reviews.llvm.org/D108625
-
Fangrui Song authored
For a variable in a comdat nodeduplicate, its initializer may be significant. E.g. its content may be implicitly referenced by another comdat member (or required to parallel to another comdat member by the runtime when explicit section is used). We can clone it into an unnamed private linkage variable to preserve its content. This partially fixes PR51394 (Sony's proprietary linker using LTO): no error will be reported. This is partial because we do not guarantee the global variable order if the runtime has parallel section requirement. --- There is a similar issue for regular LTO, but unrelated to PR51394: with lib/LTO (using either ld.lld or LLVMgold.so), linking two modules with a weak function of the same name, can leave one weak profc and two private profd, due to lib/LTO's current deficiency that it mixes the two concepts together: comdat selection and symbol resolution. If the issue is considered important, we should suppress private profd for the weak+ regular LTO case. Reviewed By: phosek Differential Revision: https://reviews.llvm.org/D108879
-
Vassil Vassilev authored
The current infrastructure in lib/Interpreter has a tool, clang-repl, very similar to clang-interpreter which also allows incremental compilation. This patch moves clang-interpreter as a test case and drops it as conditionally built example as we already have clang-repl in place. Differential revision: https://reviews.llvm.org/D107049
-