- Jul 23, 2020
-
-
Jonas Devlieghere authored
Eliminates value parameter for types that are not trivially copyable.
-
Michael Kruse authored
-
Richard Smith authored
glibc's implementation of the CMPLX macro uses it (with -fgnuc-version set to 4.7 or later).
-
Nico Weber authored
-
Fangrui Song authored
`__llvm_profile_instrument_memop` transitively calls calloc, thus calloc should not be instrumented. I saw a `calloc -> __llvm_profile_instrument_memop -> calloc -> __llvm_profile_instrument_memop -> ...` infinite loop leading to stack overflow when the malloc implementation (e.g. tcmalloc) is built and instrumented along with the application. We should figure out the library calls which may be instrumented and disable their instrumentation before rolling out this change. Reviewed By: yamauchi Differential Revision: https://reviews.llvm.org/D84358
-
David Blaikie authored
-
Nikita Popov authored
-
Nikita Popov authored
And adjust the indbrtest4 test to actually test what it's supposed to. BB1 is supposed to be eliminated here, but isn't, because BB0 still branches to it. This was lost due to the incomplete CHECK lines.
-
Louis Dionne authored
When the compiler is Clang, _GNUC_VER_NEW is 0, which messes up the logic.
-
Mircea Trofin authored
-
Andrew Grieve authored
Summary: Came up in Chromium: https://bugs.chromium.org/p/chromium/issues/detail?id=1103108#c21 Reviewers: eugenis Reviewed By: eugenis Subscribers: #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D84237
-
David Blaikie authored
I was trying to pick this up a bit when reviewing D48426 (& perhaps D69778) - in any case, looks like D48426 added a module level flag that might not be needed. The D48426 implementation worked by setting a module level flag, then code generating contents from the PCH a special case in ASTContext::DeclMustBeEmitted would be used to delay emitting the definition of these functions if they came from a Module with this flag. This strategy is similar to the one initially implemented for modular codegen that was removed in D29901 in favor of the modular decls list and a bit on each decl to specify whether it's homed to a module. One major difference between PCH object support and modular code generation, other than the specific list of decls that are homed, is the compilation model: MSVC PCH modules are built into the object file for some other source file (when compiling that source file /Yc is specified to say "this compilation is where the PCH is homed"), whereas modular code generation invokes a separate compilation for the PCH alone. So the current modular code generation test of to decide if a decl should be emitted "is the module where this decl is serialized the current main file" has to be extended (as Lubos did in D69778) to also test the command line flag -building-pch-with-obj. Otherwise the whole thing is basically streamlined down to the modular code generation path. This even offers one extra material improvement compared to the existing divergent implementation: Homed functions are not emitted into object files that use the pch. Instead at -O0 they are not emitted into the IR at all, and at -O1 they are emitted using available_externally (existing functionality implemented for modular code generation). The pch-codegen test has been updated to reflect this new behavior. [If possible: I'd love it if we could not have the extra MSVC-style way of accessing dllexport-pch-homing, and just do it the modular codegen way, but I understand that it might be a limitation of existing build systems. @hans / @thakis: Do either of you know if it'd be practical to move to something more similar to .pcm handling, where the pch itself is passed to the compilation, rather than homed as a side effect of compiling some other source file?] Reviewers: llunak, hans Differential Revision: https://reviews.llvm.org/D83652
-
David Green authored
This was missed out of 1030e825, but hopefully fixes the issues reported with NEON accidentally generating MVE instructions.
-
Thomas Raoux authored
CopyOp get vectorized to vector.transfer_read followed by vector.transfer_write Differential Revision: https://reviews.llvm.org/D83739
-
Louis Dionne authored
-
Pete Steinfeld authored
Summary: When a constant array of empty strings goes through contant folding, the result is something that contains no bytes. If this array is passed to the intrinsic function `RESHAPE()`, we were not handling things correctly. I fixed this by checking for an empty destination when calling the function `CopyFrom()` on an array of strings. I also added a test with a couple of different examples that trigger the problem. Reviewers: klausler, tskeith, DavidTruby Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D84352
-
Andrew Litteken authored
Add pass dependecies: - TargetTransformInfoWrapperPass - TargetPassConfig - LoopInfoWrapperPass - TargetLibraryInfoWrapperPass To fix inconsistencies when passes are added to the pipeline. Reviewers: efriedma, kmclaughlin, paquette Reviewed By: efriedma Differential Revision: https://reviews.llvm.org/D84346
-
Louis Dionne authored
We want to be sure that atomic<size_t> is always lock-free, or the code will be much slower than expected (and could even conceivably fail if the lock implementation somehow calls back into libc++abi).
-
Louis Dionne authored
This allows simplifying the implementation of barriers. This is a re-commit of 1ac403bd, which had to be reverted in 64a9c944 because the minimum CMake version wasn't high enough. Now that we've upgraded, we can do this. Differential Revision: https://reviews.llvm.org/D75243
-
LLVM GN Syncbot authored
-
Jonas Devlieghere authored
-
Nikita Popov authored
-
Amy Kwan authored
The implementation of the xvtlsbb builtins/intrinsics were not correct as the intrinsics previously used i1 as an argument type. This patch changes the i1 argument type used in these intrinsics to be i32 instead, as having the second as an i1 can lead to issues in the backend. Differential Revision: https://reviews.llvm.org/D84291
-
Simon Pilgrim authored
Also remove DIE.h include from DwarfCompileUnit.h and replace with forward declarations.
-
Simon Pilgrim authored
-
Louis Dionne authored
This upgrade should be friction-less because we've already been ensuring that CMake >= 3.13.4 is used. This is part of the effort discussed on llvm-dev here: http://lists.llvm.org/pipermail/llvm-dev/2020-April/140578.html Differential Revision: https://reviews.llvm.org/D78648
-
Hans Wennborg authored
After lots of follow-up fixes, there are still problems, such as -Wno-suggest-override getting passed to the Windows Resource Compiler because it was added with add_definitions in the CMake file. Rather than piling on another fix, let's revert so this can be re-landed when there's a proper fix. This reverts commit 21c0b4c1. This reverts commit 81d68ad2. This reverts commit a361aa52. This reverts commit fa42b7cf. This reverts commit 955f87f9. This reverts commit 8b16e45f. This reverts commit 308a127a. This reverts commit 274b6b0c. This reverts commit 1c7037a2.
-
Mircea Trofin authored
We can just use the definition from config.h. This means we need to move a few lines around in CMakeLists.txt - the TF_AOT detection needs to be before the spot we process the config.h.cmake files. Differential Revision: https://reviews.llvm.org/D84349
-
Matt Arsenault authored
-
Matt Arsenault authored
There's no reason to involve the hassle of a virtual method targets have to override for a simple boolean. Not sure exactly what's going on with Mips, but it seems to define its own totally separate handler classes.
-
Nico Weber authored
-
Joel E. Denny authored
This implements OpenMP runtime support for the OpenMP TR8 `present` map type modifier. The previous patch in this series implements Clang front end support. See that patch summary for behaviors that are not yet supported. Reviewed By: grokos, jdoerfert Differential Revision: https://reviews.llvm.org/D83062
-
Adrian Prantl authored
-
Matt Arsenault authored
v_cvt_f32_f16 can still accept this value as a literal constant. This showed up in GlobalISel since it doesn't have constant folding for G_FPEXT.
-
Logan Smith authored
-
Benjamin Kramer authored
The underlying infrastructure supports this already, just add the pattern matching for linalg.generic. Differential Revision: https://reviews.llvm.org/D84335
-
Alex Richardson authored
If we use the default of None, we get a python exception in find_and_diagnose_missing() instead of printing a sensible error message. Reviewed By: #libc, ldionne Differential Revision: https://reviews.llvm.org/D84342
-
Matt Arsenault authored
This was structured in a way that implied every split argument is in memory, or in registers. It is possible to pass an original argument partially in registers, and partially in memory. Transpose the logic here to only consider a single piece at a time. Every individual CCValAssign should be treated independently, and any merge to original value needs to be handled later. This is in preparation for merging some preprocessing hacks in the AMDGPU calling convention lowering into the generic code. I'm also not sure what the correct behavior for memlocs where the promoted size is larger than the original value. I've opted to clamp the memory access size to not exceed the value register to avoid the explicit trunc/extend/vector widen/vector extract instruction. This happens for AMDGPU for i8 arguments that end up stack passed, which are promoted to i16 (I think this is a preexisting DAG bug though, and they should not really be promoted when in memory).
-
Matt Arsenault authored
-
Gui Andrade authored
For now, xdrrec_create is only intercepted Linux as its signature is different on Solaris. The method of intercepting xdrrec_create isn't super ideal but I couldn't think of a way around it: Using an AddrHashMap combined with wrapping the userdata field. We can't just allocate a handle on the heap in xdrrec_create and leave it at that, since there'd be no way to free it later. This is because it doesn't seem to be possible to access handle from the XDR struct, which is the only argument to xdr_destroy. On the other hand, the callbacks don't have a way to get at the x_private field of XDR, which is what I chose for the HashMap key. So we need to wrap the handle parameter of the callbacks. But we can't just pass x_private as handle (as it hasn't been set yet). We can't put the wrapper struct into the HashMap and pass its pointer as handle, as the key we need (x_private again) hasn't been set yet. So I allocate the wrapper struct on the heap, pass its pointer as handle, and put it into the HashMap so xdr_destroy can find it later and destroy it. Differential Revision: https://reviews.llvm.org/D83358
-