- Jun 19, 2020
-
-
Matt Arsenault authored
This should probably be implied for all the speculatable ones. I think the only ones where this plausibly doesn't apply is s_sendmsghalt and maybe kill.
-
Davide Italiano authored
Sometimes a dead block gets folded and the debug information is still retained. This manifests as jumpy stepping in lldb, see the bugzilla PR for an end-to-end C testcase. Fixes https://bugs.llvm.org/show_bug.cgi?id=46008 Differential Revision: https://reviews.llvm.org/D82062
-
Eduardo Caldas authored
Reviewers: gribozavr2 Reviewed By: gribozavr2 Subscribers: hlopko, gribozavr2, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D81168
-
Christopher Ferris authored
Summary: When enabling some malloc debug features on Android, multiple 32 bit regions become exhausted, and the allocations fail. Allow allocations to keep trying each bigger class in the Primary until it finds a fit. In addition, some Android tests running on 32 bit fail sometimes due to a running out of space in two regions, and then fail the allocation. Reviewers: cryptoad Reviewed By: cryptoad Subscribers: #sanitizers, llvm-commits Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D82070
-
Michael Liao authored
Reviewers: arsenm Subscribers: wdng, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D82025
-
Louis Dionne authored
Add a simple CMakeLists.txt to build the runtimes in lockstep without building all of LLVM. See [1] for details. [1]: http://lists.llvm.org/pipermail/llvm-dev/2020-June/142384.html
-
peter klausler authored
Summary: Fix build problems encountered on osx in two files. The one in character.cpp fixes a legitimate bug that elicited a valid warning. Reviewers: tskeith, PeteSteinfeld, sscalpone, jdoerfert, DavidTruby Reviewed By: tskeith, PeteSteinfeld Subscribers: llvm-commits, flang-commits Tags: #flang, #llvm Differential Revision: https://reviews.llvm.org/D82107
-
serge-sans-paille authored
Move code that may update the IR after precondition, so that if precondition fail, the IR isn't modified. Differential Revision: https://reviews.llvm.org/D81225
-
Matt Arsenault authored
These don't really modify any memory, and should not expect memory operands.
-
Siva Chandra Reddy authored
Current implementations of single precision and double precision floating point operations operate on bits of the integer type of same size. The code made use of magic masks which were listed as literal integer values. This is not possible in the case of long double type as the mantissa of quad-precision long double type used on non-x86 architectures is wider that the widest integer type for which we can list literal values. So, in this patch, to avoid using magic masks specified with literal values, we use packed bit-field struct types and let the compiler generate the masks. This new scheme allows us to implement long double flavors of the various floating point operations. To keep the size of the patch small, only the implementations of fabs and trunc have been switched to the new scheme. In following patches, all exisiting implementations will be switched to the new scheme. Reviewers: asteinhauser Differential Revision: https://reviews.llvm.org/D82036
-
aartbik authored
Summary: The "i1" (viz. bool) type does not have a proper equivalent on the "C" size. So, to avoid any ABIs issues, we simply use print_i32 on an i32 value of one or zero for true and false. This has the added advantage that one less function needs to be implemented when porting the runtime support library. Reviewers: ftynse, bkramer, nicolasvasilache Reviewed By: ftynse Subscribers: mehdi_amini, rriddle, jpienaar, shauheen, antiagainst, nicolasvasilache, arpith-jacob, mgester, lucyrfox, liufengdb, stephenneuendorffer, Joonsoo, grosul1, frgossen, Kayjukh, jurahul, msifontes Tags: #mlir Differential Revision: https://reviews.llvm.org/D82048
-
Martijn Vels authored
Summary: This change adds local 'end' and 'pos' variables for the main loop inmstead of using the ConstructTransaction variables directly. We observed that not all vector initialization and resize operations got properly vectorized, i.e., (partially) unrolled into XMM stores for floats. For example, `vector<int32_t> v(n, 1)` gets vectorized, but `vector<float> v(n, 1)`. It looks like the compiler assumes the state is leaked / aliased in the latter case (unclear how/why for float, but not for int32), and because of this fails to see vectorization optimization? See https://gcc.godbolt.org/z/UWhiie By using a local `__new_end_` (fixed), and local `__pos` (copied into __tx.__pos_ per iteration), we offer the compiler a clean loop for unrolling. A demonstration can be seen in the isolated logic in https://gcc.godbolt.org/z/KoCNWv The com Reviewers: EricWF, #libc! Subscribers: libcxx-commits Tags: #libc Differential Revision: https://reviews.llvm.org/D82111
-
Hanhan Wang authored
Summary: Fixed build of D81618 Add a pattern for expanding tanh op into exp form. A `tanh` is expanded into: 1) 1-exp^{-2x} / 1+exp^{-2x}, if x => 0 2) exp^{2x}-1 / exp^{2x}+1 , if x < 0. Differential Revision: https://reviews.llvm.org/D82040 -
Daniel Grumberg authored
-
Alexey Bataev authored
-
Ties Stuij authored
Summary: As part of moving the argument lowering handling for bfloat arguments and returns to the backend, this patch removes the code that was responsible for handling the coercion of those arguments in Clang's Codegen. Subscribers: kristof.beyls, danielkiss, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D81837
-
Alexey Bataev authored
Summary: Compiler may erroneously treat current context in OpenMP pragmas as the context where new type declaration/definition is allowed. But the declartation/definition of the new types in OpenMP pragmas should not be allowed. Reviewers: jdoerfert Subscribers: yaxunl, guansong, sstefan1, cfe-commits, caomhin Tags: #clang Differential Revision: https://reviews.llvm.org/D82019
-
Hiroshi Yamauchi authored
etc. happens to be in the InstallDir path in the -### output. Differential Revision: https://reviews.llvm.org/D82046
-
Stanislav Mekhanoshin authored
Nothing breaks yet, but all encodings shall be in the map. Differential Revision: https://reviews.llvm.org/D81974
-
Alex Richardson authored
When testing libc++ for our cross-compiled CheriBSD target we specify an explicit LIBCXX_CXX_ABI_INCLUDE_PATHS for libcxxrt. The hardcoded path /usr/include/c++/v1 was introduced in 61e89737 and overrides any value passed on the CMake command line. Fix this by using it as a fallback rather than a fixed default value. Reviewed By: #libc, ldionne Differential Revision: https://reviews.llvm.org/D82095
-
Alex Richardson authored
Previously the script only handled C input, this change extends the JSON parsing to to also include C++ function types such as methods, constructors and destructors. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D80914
-
Alex Richardson authored
Function declarations can in fact have an 'inner' node that lists the ParmVarDecls. It seems like either the JSON output has changed or that I tested the original JSON parsing change with test files that only have function definitions without arguments. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D80913
-
Cullen Rhodes authored
Highlight the `bfloat` type introduced in D78190.
-
Arthur Eubanks authored
When possible (e.g. internal linkage), strip preallocated attribute off parameters/arguments. This requires removing the "preallocated" operand bundle from the call site, replacing @llvm.call.preallocated.arg() with an alloca and a bitcast to i8*, and removing the @llvm.call.preallocated.setup(). Since @llvm.call.preallocated.arg() can be called multiple times with the same arg index, we create an alloca per arg index. We add a @llvm.stacksave() where the @llvm.call.preallocated.setup() was and a @llvm.stackrestore() after the preallocated call to prevent the stack from blowing up. This is valid because the argument would normally not exist on the stack after the call before the transformation. This does not currently handle all possible preallocated calls. We will need to figure out where to put @llvm.stackrestore() in the cases where there is no obvious place to put it, for example conditional preallocated calls, invokes. This sort of transformation may need to be moved to somewhere more accessible to accomodate similar transformations (like inlining) in the future. Reviewers: efriedma, hans Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D80951
-
Francesco Petrogalli authored
Summary: The new SVE builtin type __SVBFloat16_t` is used to represent scalable vectors of bfloat elements. Reviewers: sdesmalen, efriedma, stuij, ctetreau, shafik, rengolin Subscribers: tschuett, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D81304
-
Roman Lebedev authored
https://bugs.llvm.org/show_bug.cgi?id=45360 This is reduced from the (runnable) test provided in the bug report. The remainder operation is originally guarded, it never divides by zero. Indvars should not make it execute unconditionally. This is not a great test, running whole -O2 is fragile, but i really don't understand why running -indvars on the IR before that tranform happens doesn't work.
-
Alexey Bataev authored
Summary: According to OpenMP 5.0, nonmonotonic modifier can be used with all schedule kinds, not only dynamic and guided as in OpenMP 4.5. Reviewers: jdoerfert Subscribers: yaxunl, guansong, sstefan1, cfe-commits, caomhin Tags: #clang Differential Revision: https://reviews.llvm.org/D82026
-
Tobias Bosch authored
Summary: This allows to run dexter tests with separately compiled binaries that are specified via --binary if the source file location changed between compilation and dexter test run. Reviewers: TWeaver, jmorse, probinson, #debug-info Reviewed By: jmorse Subscribers: #debug-info, cmtice, llvm-commits Tags: #llvm, #debug-info Differential Revision: https://reviews.llvm.org/D81319
-
Alexandros Lamprineas authored
This patch adds basic support for BFloat in the Arm backend. For now the code generation relies on fullfp16 being present. Briefly: * adds the bfloat scalar and vector types in the necessary register classes, * adjusts the calling convention to cope with bfloat argument passing and return, * adds codegen patterns for moves, loads and stores. It's tested mostly by the intrinsic patches that depend on it (load/store, convert/copy). The following people contributed to this patch: * Alexandros Lamprineas * Ties Stuij Differential Revision: https://reviews.llvm.org/D81373
-
Amara Emerson authored
Differential Revision: https://reviews.llvm.org/D82034
-
- Jun 18, 2020
-
-
Alexey Bataev authored
Summary: Added codegen for scan directives in parallel for regions. Emits the code for the directive with inscan reductions. Original code: ``` #pragma omp parallel for reduction(inscan, op : ...) for() { <input phase>; #pragma omp scan (in)exclusive(...) <scan phase> } ``` is transformed to something: ``` #pragma omp parallel { size num_iters = <num_iters>; <type> buffer[num_iters]; #pragma omp for for (i: 0..<num_iters>) { <input phase>; buffer[i] = red; } #pragma omp barrier for (int k = 0; k != ceil(log2(num_iters)); ++k) for (size cnt = last_iter; cnt >= pow(2, k); --k) buffer[i] op= buffer[i-pow(2,k)]; #pragma omp for for (0..<num_iters>) { red = InclusiveScan ? buffer[i] : buffer[i-1]; <scan phase>; } } ``` Reviewers: jdoerfert Subscribers: yaxunl, guansong, sstefan1, cfe-commits, caomhin Tags: #clang Differential Revision: https://reviews.llvm.org/D81478 -
Pete Steinfeld authored
Summary: We weren't handling the case of subroutines with alternate returns that are contained in modules. I changed the code to add an `*` as the name of the parameter when creating the `.mod` file. Reviewers: tskeith, klausler, DavidTruby Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D82096
-
Saleem Abdulrasool authored
Add missing `operator!=` and make `operator-` const for `EHABISectionIterator`. This repairs the build of libunwind when building with GCC. Patch by Chad Duffin! Reviewed By: compnerd, libunwind Differential Revision: https://reviews.llvm.org/D81597
-
Simon Pilgrim authored
[TargetLowering] SimplifyMultipleUseDemandedBits - drop already extended ISD::SIGN_EXTEND_INREG nodes. If the source of the SIGN_EXTEND_INREG node is already sign extended, use the source directly.
-
Nico Weber authored
-
Hans Wennborg authored
rm works fine without it.
-
hyd-dev authored
[clang-tidy] Add --use-color command line option and UseColor option to control colors in diagnostics This patch adds `--use-color` command line option and `UseColor` option to clang-tidy to control colors in diagnostics. With these options, users can force colorful output. This is useful when using clang-tidy with parallelization command line tools (like ninja and GNU parallel), as they often pipe clang-tidy's standard output and make the colors disappear. Reviewed By: njames93 Differential Revision: https://reviews.llvm.org/D79477
-
Matt Arsenault authored
-
Ayke van Laethem authored
Code like the following: define i32 @foo(i32 %a, i1 zeroext %b) addrspace(1) { entry: %conv = zext i1 %b to i32 %add = add nsw i32 %conv, %a ret i32 %add } Would compile to the following (incorrect) code: foo: mov r18, r20 clr r19 add r22, r18 adc r23, r19 sbci r24, 0 sbci r25, 0 ret Those sbci instructions are clearly wrong, they should have been adc instructions. This commit improves codegen to use adc instead: foo: mov r18, r20 clr r19 ldi r20, 0 ldi r21, 0 add r22, r18 adc r23, r19 adc r24, r20 adc r25, r21 ret This code is not optimal (it could be just 5 instructions instead of the current 9) but at least it doesn't miscompile. Differential Revision: https://reviews.llvm.org/D78439 -
Nathan James authored
This changes the behavious of `RenamerClangTidyCheck` based checks by grouping declarations of the same thing into 1 warning where it is first declared. This cleans up clang-tidy output and prevents issues where 1 fix-it couldn't be applied, yet all other warnings(and fix-its) for the same declaration would be applied. The old behaviour of forward declaring a class without defining it isn't affected, i.e. no warnings will be emitted for that case. Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D82059
-