- Aug 04, 2020
-
-
Jonas Devlieghere authored
We don't support getting the remote environment. The gdb remote protocol has no packet for that.
-
Matt Arsenault authored
Get the argument register and ensure there's a copy to the virtual register. AMDGPU and AArch64 have similarish code to get the livein value, and I also want to use this in multiple places. This is a bit more aggressive about setting the register class than the original function, but that's probably OK. I think we're missing a few verifier checks for function live ins. I noticed AArch64's calling convention code is not actually adding liveins to functions, only the entry block (which apparently might not matter that much?). There should probably be a verifier check that entry block live ins are also live into the function. We also might need a verifier check that the copy to the livein virtual register is in the entry block.
-
Yifan Shen authored
When lldb cannot find source file thus IDE renders a disassembly view, add syntax highlighting for constants, registers and final line comments for better debugging experience. The original plain disassembly view looks like: {F12401687} An ideal view is like the screenshot attached. {F12401515} In this diff, the mimeType is a kind of media type for formatting the content in the response to a source request. Elements in the disassembly view, like constants, registers and final line comments are colored for highlighting. A built-in support in the VSCode IDE for syntax highlighting will identify the which mimeType to apply and render the disassembly view as expected. Reviewed By: wallace, clayborg Differential Revision: https://reviews.llvm.org/D84555
-
Eli Friedman authored
The SVE instruction set only supports sdiv/udiv for 32-bit and 64-bit integers. If we see an 8-bit or 16-bit divide, widen the operands to 32 bits, and narrow the result. Differential Revision: https://reviews.llvm.org/D85170
-
AK authored
Differential Revision: https://reviews.llvm.org/D85232
-
Adrian Pop authored
RTM Adaptive Locks are supported on msys2/mingw for clang and gcc. Differential Revision: https://reviews.llvm.org/D81776
-
Jonas Devlieghere authored
Fixes error: implicit declaration of function 'printf' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
-
Ilya Leoshkevich authored
* Add SystemZ to the list of supported architectures. * XFAIL a few tests. Coverage reporting is broken, and is not easy to fix (see comment in coverage.test). Interaction with sanitizers needs to be investigated more thoroughly, since they appear to reduce coverage in certain cases.
-
Ilya Leoshkevich authored
If a section is supposed to hold elements of type T, then the corresponding CreateSecStartEnd()'s Ty parameter represents T*. Forwarding it to GlobalVariable constructor causes the resulting GlobalVariable's type to be T*, and its SSA value type to be T**, which is one indirection too many. This issue is mostly masked by pointer casts, however, the global variable still gets an incorrect alignment, which causes SystemZ to choose wrong instructions to access the section.
-
Ilya Leoshkevich authored
The usage pattern of Bundle variable assumes the machine is little endian, which is not the case on SystemZ. Fix by converting Bundle to little-endian when necessary.
-
Dan Gohman authored
This allows people to use `int8_t` instead of `char`, -funsigned-char, and generally decouples SIMD from the specialness of `char`. And it makes intrinsics like `__builtin_wasm_add_saturate_s_i8x16` and `__builtin_wasm_add_saturate_u_i8x16` use signed and unsigned element types, respectively. Differential Revision: https://reviews.llvm.org/D85074
-
Rahul Joshi authored
- Moved TypeRange into its own header/cpp file, and add hashing support. - Change FunctionType::get() and TupleType::get() to use TypeRange Differential Revision: https://reviews.llvm.org/D85075
-
Cameron McInally authored
This corresponds with the SelectionDAGISel change in D84056. Also, rename some poorly named tests in CodeGen/X86/fast-isel-fneg.ll with NFC. Differential Revision: https://reviews.llvm.org/D85149
-
Yonghong Song authored
Four new CO-RE relocations are introduced: - TYPE_EXISTENCE: whether a typedef/record/enum type exists - TYPE_SIZE: the size of a typedef/record/enum type - ENUM_VALUE_EXISTENCE: whether an enum value of an enum type exists - ENUM_VALUE: the enum value of an enum type These additional relocations will make CO-RE bpf programs more adaptive for potential kernel internal data structure changes. Differential Revision: https://reviews.llvm.org/D83878
-
Diego Caballero authored
Always define a remapping for the memref replacement (`indexRemap`) with the proper number of inputs, including all the `outerIVs`, so that the number of inputs and the operands provided for the map don't mismatch. Reviewed By: bondhugula, andydavis1 Differential Revision: https://reviews.llvm.org/D85177
-
Fangrui Song authored
This is a Windows only test which requires HAVE_DIA_SDK, so I failed to notice it.
-
Matt Arsenault authored
This one is pretty easy and shrinks the list of unhandled intrinsics. I'm not sure how relevant the insert point is. Using the insert position of EntryBuilder will place this after constants. SelectionDAG seems to end up emitting these after argument copies and before anything else, but I don't think it really matters. This also ends up emitting these in the opposite order from SelectionDAG, but I don't think that matters either. This also needs a fix to stop the later passes dropping this as a dead instruction. DeadMachineInstructionElim's version of isDead special cases LOCAL_ESCAPE for some reason, and I'm not sure why it's excluded from MachineInstr::isLabel (or why isDead doesn't check it). I also noticed DeadMachineInstructionElim never considers inline asm as dead, but GlobalISel will drop asm with no constraints.
-
cgyurgyik authored
Reviewed By: sivachandra Differential Revision: https://reviews.llvm.org/D85059
-
Matt Arsenault authored
-
Matt Arsenault authored
-
Louis Dionne authored
-
aartbik authored
Introduces the expand and compress operations to the Vector dialect (important memory operations for sparse computations), together with a first reference implementation that lowers to the LLVM IR dialect to enable running on CPU (and other targets that support the corresponding LLVM IR intrinsics). Reviewed By: reidtatge Differential Revision: https://reviews.llvm.org/D84888
-
Bardia Mahjour authored
This patch tries to improve readability and maintenance of createVectorizedLoopSkeleton by reorganizing some lines, updating some of the comments and breaking it up into smaller logical units. Reviewed By: pjeeva01 Differential Revision: https://reviews.llvm.org/D83824
-
Xavier Denis authored
This revision adds the following peephole optimization and it's negation: %a = urem i64 %x, %y %b = icmp ule i64 %a, %x ====> %b = true With John Regehr's help this optimization was checked with Alive2 which suggests it should be valid. This pattern occurs in the bound checks of Rust code, the program const N: usize = 3; const T = u8; pub fn split_mutiple(slice: &[T]) -> (&[T], &[T]) { let len = slice.len() / N; slice.split_at(len * N) } the method call slice.split_at will check that len * N is within the bounds of slice, this bounds check is after some transformations turned into the urem seen above and then LLVM fails to optimize it any further. Adding this optimization would cause this bounds check to be fully optimized away. ref: https://github.com/rust-lang/rust/issues/74938 Differential Revision: https://reviews.llvm.org/D85092
-
Xavier Denis authored
-
Fangrui Song authored
D83530 removed --inlining={true,false} which were used by old asan_symbolize.py script. Add compatibility aliases so that old asan_symbolize.py and sanitizer binaries can work with new llvm-symbolizer. Reviewed By: thakis Differential Revision: https://reviews.llvm.org/D85228
-
Nikita Popov authored
Teach SCCP to create notconstant lattice values from inequality assumes and nonnull metadata, and update getConstant() to make use of them. Additionally isOverdefined() needs to be changed to consider notconstant an overdefined value. Handling inequality branches is delayed until our branch on undef story in other passes has been improved. Differential Revision: https://reviews.llvm.org/D83643
-
Thorsten Schuett authored
"Listing the alignment and access size (== expected alignment) in the warning seems like a good idea." solves PR 46947 struct Foo { struct Bar { void * a; void * b; }; Bar bar; }; struct ThirtyTwo { struct Large { void * a; void * b; void * c; void * d; }; Large bar; }; void braz(Foo *foo, ThirtyTwo *braz) { Foo::Bar bar; __atomic_load(&foo->bar, &bar, __ATOMIC_RELAXED); ThirtyTwo::Large foobar; __atomic_load(&braz->bar, &foobar, __ATOMIC_RELAXED); } repro.cpp:21:3: warning: misaligned atomic operation may incur significant performance penalty; the expected (16 bytes) exceeds the actual alignment (8 bytes) [-Watomic-alignment] __atomic_load(&foo->bar, &bar, __ATOMIC_RELAXED); ^ repro.cpp:24:3: warning: misaligned atomic operation may incur significant performance penalty; the expected (32 bytes) exceeds the actual alignment (8 bytes) [-Watomic-alignment] __atomic_load(&braz->bar, &foobar, __ATOMIC_RELAXED); ^ repro.cpp:24:3: warning: large atomic operation may incur significant performance penalty; the access size (32 bytes) exceeds the max lock-free size (16 bytes) [-Watomic-alignment] 3 warnings generated. Differential Revision: https://reviews.llvm.org/D85102
-
Jordan Rupprecht authored
This is a followup to 817b3a6f: in `builder_base` we should use abspath, not realpath, because the name is significant. This is used by test cases that use `@skipIf(compiler="clang", compiler_version=['<', <version>])`
-
Sanjay Patel authored
The test are adapted from the existing tests for cmp/select idioms.
-
George Mitenkov authored
Second patch with test fixes. Redundant `%{{.*}} = ` removed, label checks added, tabs converted to spaces and some namings are changed to match the convention. Fixed tests: - constant-op-to-llvm - func-ops-to-llvm (renamed) - memory-ops-to-llvm - misc-ops-to-llvm - module-ops-to-llvm - shift-ops-to-llvm (renamed) - spirv-types-to-llvm-invalid (renamed) Reviewed By: ftynse, rriddle Differential Revision: https://reviews.llvm.org/D85206
-
David Blaikie authored
Introduced by fd6584a2 Following similar use of casts in AsmParser.cpp, for instance - ideally this type would use unsigned chars as they're more representative of raw data and don't get confused around implementation defined choices of char's signedness, but this is what it is & the signed/unsigned conversions are (so far as I understand) safe/bit preserving in this usage and what's intended, given the API design here.
-
Fangrui Song authored
sanitizer_symbolizer_libcdep.cpp: Change --inlining=true to --inlines and --inlining=false to --no-inlines
-
Nico Weber authored
-
Simon Pilgrim authored
-
Yash Jain authored
Simplify semi-affine expression for the operations like ceildiv, floordiv and modulo by any given symbol by checking divisibilty by that symbol. Some properties used in simplification are: 1) Commutative property of the floordiv and ceildiv: ((expr1 floordiv expr2) floordiv expr3 ) = ((expr1 floordiv expr3) floordiv expr2) ((expr1 ceildiv expr2) ceildiv expr3 ) = ((expr1 ceildiv expr3) ceildiv expr2) While simplification if operations are different no simplification is possible as there is no property that simplify expressions like these: ((expr1 ceildiv expr2) floordiv expr3) or ((expr1 floordiv expr2) ceildiv expr3). 2) If both expr1 and expr2 are divisible by the expr3 then: (expr1 % expr2) / expr3 = ((expr1 / expr3) % (expr2 / expr3)) where / is divide symbol. 3) If expr1 is divisible by expr2 then expr1 % expr2 = 0. Signed-off-by:
Yash Jain <yash.jain@polymagelabs.com> Differential Revision: https://reviews.llvm.org/D84920
-
Cameron McInally authored
These tests were made redundant by D85139.
-
Xing GUO authored
This patch fixes the undefined behavior that reported by ubsan. http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/44524/
-
Matt Arsenault authored
Fixes verifier error with SGPR unmerges with 96-bit result types.
-