- Mar 16, 2020
-
-
Simon Pilgrim authored
ISD::FSHL/FSHR shift amount values are guaranteed to act as a modulo amount, so for power-of-2 bitwidths we only need the lowest bits.
-
Nico Weber authored
-
Dominik Montada authored
Summary: Truncating the result of a merge means that most likely we could have done without merge in the first place and just used the input merge inputs directly. This can be done in three cases: 1. If the truncation result is smaller than the merge source, we can use the source in the trunc directly 2. If the sizes are the same, we can replace the register or use a copy 3. If the truncation size is a multiple of the merge source size, we can build a smaller merge This gets rid of most of the larger, hard-to-legalize merges. Reviewers: qcolombet, aditya_nandakumar, aemerson, paquette, arsenm, Petar.Avramovic Reviewed By: arsenm Subscribers: sdardis, jvesely, wdng, nhaehnle, rovka, jrtc27, atanasyan, kerbowa, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D75915
-
Juneyoung Lee authored
Summary: This is a part of the series of efforts for correcting alignment of memory operations. (Another related bugs: https://bugs.llvm.org/show_bug.cgi?id=44388 , https://bugs.llvm.org/show_bug.cgi?id=44543 ) This fixes https://bugs.llvm.org/show_bug.cgi?id=43880 by giving default alignment of loads to 1. The test CodeGen/AArch64/bcmp-inline-small.ll should have been changed; it was introduced by https://reviews.llvm.org/D64805 . I talked with @evandro, and confirmed that the test is okay to be changed. Other two tests from PowerPC needed changes as well, but fixes were straightforward. Reviewers: courbet Reviewed By: courbet Subscribers: nlopes, gchatelet, wuzish, nemanjai, kristof.beyls, hiraditya, steven.zhang, danielkiss, llvm-commits, evandro Tags: #llvm Differential Revision: https://reviews.llvm.org/D76113
-
Tatyana Krasnukha authored
Commit [1] added a declaration of function-member StackFrame::BehavesLikeZerothFrame but hasn't added an implementation for the function. This commit removes this declation, because the function is not used anywhere. [1] 31e6dbe1 Fix PC adjustment in StackFrame::GetSymbolContext Differential Revision: https://reviews.llvm.org/D75979 Patch by Anton Kolesov <Anton.Kolesov@synopsys.com>
-
Tatyana Krasnukha authored
Fix to code from https://reviews.llvm.org/D64993. Field StackFrame::m_behaves_like_zeroth_frame was introduced in commit [1], however that commit hasn't added a copying of the field to UpdatePreviousFrameFromCurrentFrame, therefore the value wouldn't change when updating frames to reflect the current situation. The particular scenario, where this matters is following. Assume we have function main that invokes function func1. We set breakpoint at func1 entry and in main after the func1 call, and do not stop at the main entry. Therefore, when debugger stops for the first time, func1 is frame#0, while main is frame#1, thus m_behaves_like_zeroth_frame is set to 0 for main frame. Execution is resumed, and stops now in main, where it is now frame#0. However while updating the frame object, m_behaves_like_zeroth_frame remains false. This field plays an important role when calculating line information for backtrace: for frame#0, PC is the current line, therefore line information is retrieved for PC, however for all other frames this is not the case - calculated PC is a return-PC, i.e. instruction after the function call line, therefore for those frames LLDB needs to step back by one instruction. Initial implementation did this strictly for frames that have index != 0 (and index is updated properly in UpdatePreviousFrameFromCurrentFrame), but m_behaves_like_zeroth_frame added a capability for middle-of-stack frames to behave in a similar manner. But because current code now doesn't check frame idx, m_behaves_like_zeroth_frame must be set to true for frames with 0 index, not only for frame that behave like one. In the described test case, after stopping in main, LLDB would still consider frame#0 as non-zeroth, and would subtract instruction from the PC, and would report previous like as current line. The error doesn't manifest itself in LLDB interpreter though - it can be reproduced through LLDB-MI and when using SB API, but not when we interpreter command "continue" is executed. Honestly, I didn't fully understand why it works in interpreter, I did found that bug "fixes" itself if I enable DEBUG_STACK_FRAMES in StackFrameList.cpp, because that calls StackFrame::Dump and that calls GetSymbolContext(eSymbolContextEverything), which fills the context of frame on the first breakpoint, therefore it doesn't have to be recalculated (improperly) on a second frame. However, on first breakpoint symbol context is calculated for the "call" line, not the next one, therefore it should be recalculated anyway on a second breakpoint, and it is done correctly, even though m_behaves_like_zeroth_frame is still incorrect, as long as GetSymbolContext(eSymbolContextEverything) has been called. [1] 31e6dbe1 Fix PC adjustment in StackFrame::GetSymbolContext Differential Revision: https://reviews.llvm.org/D75975 Patch by Anton Kolesov <Anton.Kolesov@synopsys.com>
-
Juneyoung Lee authored
-
Guillaume Chatelet authored
-
Georgii Rymar authored
This addresses post-commit comments suggested by James Henderson for D76131.
-
Sam Parker authored
Introduce a variable for 'this' instead of calling static_cast multiple times in TargetTransformInfoImpl.h
-
Simon Pilgrim authored
We currently only ever use this for lowering constant uniform values (shift/rotate by immediate) so we can safely enable it by default (it treats the undef bits as zero when extracting constants). This is necessary for an upcoming patch that will use SimplifyDemandedBits more aggressively on funnel shift amounts and causes regressions in vXi64 constant without it.
-
Simon Pilgrim authored
Avoid code duplication and matches what we do for the similar LowerFunnelShift and LowerScalarImmediateShift methods.
-
Haojian Wu authored
We forgot to fix in the previous patch.
-
Sam Parker authored
Introduce a switch statement for trunc, bitcast, addrspacecast and zext in BasicTTIImpl.
-
Oliver Stannard authored
These tests passed in my Windows 10 VM, but are failing on Windows bots with errors which look related to unicode encodings. Disable the tests on Windows for now.
-
Pavel Labath authored
-
Paweł Barań authored
The flag allows classes to don't define move operations when copy operations are explicitly deleted. This flag is related to Google C++ Style Guide https://google.github.io/styleguide/cppguide.html#Copyable_Movable_Types
-
Jonas Paulsson authored
The type legalizer will scalarize vector conversions from integer to floating point if the source element size is less than that of the result. This is avoided now by inserting a zero/sign-extension of the source vector before type legalization. Review: Ulrich Weigand Differential revision: https://reviews.llvm.org/D75978
-
Oliver Stannard authored
-
Martin Storsjö authored
GCC 7 warned about control reaching the end of the non-void function, despite all 7 LineChar values being handled in the switch.
-
Oliver Stannard authored
-
David Stenberg authored
Summary: This is a preparatory change for allowing LLVM to emit DW_OP_convert operations converting to the generic type. If DW_OP_convert's operand is 0, it converts the top of the stack to the generic type, as specified by DWARFv5 section 2.5.1.6: "[...] takes one operand, which is an unsigned LEB128 integer that represents the offset of a debugging information entry in the current compilation unit, or value 0 which represents the generic type." This adds support for such operations to dsymutil. Reviewers: aprantl, markus, friss, JDevlieghere Reviewed By: aprantl, JDevlieghere Subscribers: hiraditya, llvm-commits Tags: #debug-info, #llvm Differential Revision: https://reviews.llvm.org/D76142
-
Pavel Labath authored
In this case dwo_num can be None => stop assuming it can't.
-
Oliver Stannard authored
Add the DW_OP_entry_value and DW_OP_stack_value opcodes to the DWARF expression printer. Differential revision: https://reviews.llvm.org/D74843
-
Oliver Stannard authored
Add the DW_OP_breg0..DW_OP_breg31 and DW_OP_bregx opcodes to the DWARF expression printer. Differential revision: https://reviews.llvm.org/D74841
-
Oliver Stannard authored
Add a unit test for the compact DWARF expression printer which will be used by the llvm-objdump --debug-vars option. Differential revision: https://reviews.llvm.org/D75250
-
Oliver Stannard authored
This adds the --debug-vars option to llvm-objdump, which prints locations (registers/memory) of source-level variables alongside the disassembly based on DWARF info. A vertical line is printed for each live-range, with a label at the top giving the variable name and location, and the position and length of the line indicating the program counter range in which it is valid. Currently, this only works for object files, not executables or shared libraries. Differential revision: https://reviews.llvm.org/D70720
-
Sander de Smalen authored
This is a first patch in a series for the SveEmitter to generate the arm_sve.h header file and builtins. I've tried my best to strip down this patch as best as I could, but there are still a few changes that are not necessarily exercised by the load intrinsics in this patch, mostly around the SVEType class which has some common logic to represent types from a type and prototype string. I thought it didn't make much sense to remove that from this patch and split it up. Reviewers: efriedma, rovka, SjoerdMeijer, rsandifo-arm, rengolin Reviewed By: SjoerdMeijer Tags: #clang Differential Revision: https://reviews.llvm.org/D75470
-
David Stenberg authored
Summary: This is a preparatory change for allowing LLVM to emit DW_OP_convert operations converting to the generic type. If DW_OP_convert's operand is 0, it converts the top of stack to the generic type, as specified by DWARFv5 section 2.5.1.6: "[...] takes one operand, which is an unsigned LEB128 integer that represents the offset of a debugging information entry in the current compilation unit, or value 0 which represents the generic type." This adds support for such operations to llvm-dwarfdump. Reviewers: aprantl, markus, jdoerfert, jhenderson Reviewed By: aprantl Subscribers: hiraditya, llvm-commits Tags: #debug-info, #llvm Differential Revision: https://reviews.llvm.org/D76141
-
Shengchen Kan authored
alignBranches is X86 specific, change the name in a more general one since other target can do some state chang before and after emitting the instruction.
-
Rui Ueyama authored
Patch by Petr Penzin. Windows support for CET is limited to shadow stack, which is enabled by setting a PE bit in the linker. Docs: MSVC linker flag: https://docs.microsoft.com/en-us/cpp/build/reference/cetcompat?view=vs-2019 IMAGE_DLLCHARACTERISTICS_EX_CET_COMPAT PE bit: https://docs.microsoft.com/en-us/windows/win32/debug/pe-format#extended-dll-characteristics Differential Revision: https://reviews.llvm.org/D70606
-
Georgii Rymar authored
Use yaml2obj -D to simplify. We started to use it for other tests recently.
-
Shengchen Kan authored
-
Dylan McKay authored
AVR has been enabled by default since c480c584, the tests have been stable for a couple days now, revert extremely unlikely.
-
Simon Atanasyan authored
Patch by Michael Roe. Differential Revision: https://reviews.llvm.org/D75812
-
Serguei Katkov authored
According to LangRef for unordered atomic memory transfer intrinsics "The first three arguments are the same as they are in the @llvm.memcpy intrinsic, with the added constraint that len is required to be a positive integer multiple of the element_size. If len is not a positive integer multiple of element_size, then the behaviour of the intrinsic is undefined." So the len is not multiple of element size is just an undefined behavior and verifier should not complain about that as undefined behavior is allowed in LLVM IR. This change removes the verifier check for this condition Reviewers: reames Reviewed By: reames Subscribers: dantrushin, hiraditya, jfb, llvm-commits Differential Revision: https://reviews.llvm.org/D76116
-
Jun Ma authored
Differential Revision: https://reviews.llvm.org/D76118
-
Artem Dergachev authored
This makes life easier for downstream users who maintain exotic target platforms. Patch by Vince Bridgers! Differential Revision: https://reviews.llvm.org/D75529
-
Jonas Devlieghere authored
-
Juneyoung Lee authored
Summary: This is a simple fix for CodeGenPrepare that freezes branch condition when transforming select to branch. If it is not frozen, instsimplify or the later pipeline can potentially exploit undefined behavior. The diff shows optimized form becase D75859 and D76048 already made a few changes to CodeGenPrepare for optimizing freeze(cmp). Reviewers: jdoerfert, spatel, lebedev.ri, efriedma Reviewed By: lebedev.ri Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D76179
-