- Feb 25, 2017
-
-
Ranjeet Singh authored
We've been having issues with using libcxxabi and libunwind for baremetal targets because fprintf is dependent on io functions, this patch disables calls to fprintf when building for baremetal in release mode. Differential Revision: https://reviews.llvm.org/D30340 llvm-svn: 296135
-
Simon Dardis authored
This time with the missing files. Similar to PR/25526, fast-regalloc introduces spills at the end of basic blocks. When this occurs in between an ll and sc, the store can cause the atomic sequence to fail. This patch fixes the issue by introducing more pseudos to represent atomic operations and moving their lowering to after the expansion of postRA pseudos. This resolves PR/32020. Thanks to James Cowgill for reporting the issue! Reviewers: slthakur Differential Revision: https://reviews.llvm.org/D30257 llvm-svn: 296134
-
Simon Dardis authored
This reverts r296132. I forgot to include the tests. llvm-svn: 296133
-
Simon Dardis authored
Similar to PR/25526, fast-regalloc introduces spills at the end of basic blocks. When this occurs in between an ll and sc, the store can cause the atomic sequence to fail. This patch fixes the issue by introducing more pseudos to represent atomic operations and moving their lowering to after the expansion of postRA pseudos. This resolves PR/32020. Thanks to James Cowgill for reporting the issue! Reviewers: slthakur Differential Revision: https://reviews.llvm.org/D30257 llvm-svn: 296132
-
- Feb 24, 2017
-
-
Daniel Sanders authored
Summary: This isn't testable for AArch64 by itself so this patch also adds support for constant immediates in the pattern and physical register uses in the result. The new IntOperandMatcher matches the constant in patterns such as '(set $rd:GPR32, (G_XOR $rs:GPR32, -1))'. It's always safe to fold immediates into an instruction so this is the first rule that will match across multiple BB's. The Renderer hierarchy is responsible for adding operands to the result instruction. Renderers can copy operands (CopyRenderer) or add physical registers (in particular %wzr and %xzr) to the result instruction in any order (OperandMatchers now import the operand names from SelectionDAG to allow renderers to access any operand). This allows us to emit the result instruction for: %1 = G_XOR %0, -1 --> %1 = ORNWrr %wzr, %0 %1 = G_XOR -1, %0 --> %1 = ORNWrr %wzr, %0 although the latter is untested since the matcher/importer has not been taught about commutativity yet. Added BuildMIAction which can build new instructions and mutate them where possible. W.r.t the mutation aspect, MatchActions are now told the name of an instruction they can recycle and BuildMIAction will emit mutation code when the renderers are appropriate. They are appropriate when all operands are rendered using CopyRenderer and the indices are the same as the matcher. This currently assumes that all operands have at least one matcher. Finally, this change also fixes a crash in AArch64InstructionSelector::select() caused by an immediate operand passing isImm() rather than isCImm(). This was uncovered by the other changes and was detected by existing tests. Depends on D29711 Reviewers: t.p.northover, ab, qcolombet, rovka, aditya_nandakumar, javed.absar Reviewed By: rovka Subscribers: aemerson, dberris, kristof.beyls, llvm-commits Differential Revision: https://reviews.llvm.org/D29712 llvm-svn: 296131
-
Simon Pilgrim authored
Noticed while profiling PR32037, the target shuffle ops were being stored in SmallVector<*,8> types but the combiner could store as many as 16 ops at maximum depth (2 per depth). llvm-svn: 296130
-
Sanjay Patel authored
[InstCombine] don't try SimplifyDemandedInstructionBits from zext/sext because it's slow and unnecessary This one seems more obvious than D30270 that it can't make improvements because an extension always needs all of the incoming bits. There's one specific transform in SimplifyDemandedInstructionBits of converting a sext to a zext when the sign-bit is known zero, but that is handled explicitly in visitSext() with ComputeSignBit(). Like D30270, there are no IR differences (other than instruction names) for the case in PR32037: https://bugs.llvm.org//show_bug.cgi?id=32037 ...and no regression test differences. Zext/sext are a smaller part of the profile, but this still appears to shave off another 0.5% or so from 'opt -O2'. Differential Revision: https://reviews.llvm.org/D30280 llvm-svn: 296129
-
Sanjay Patel authored
llvm-svn: 296128
-
Rafael Espindola authored
Now that all special sections are SyntheticSections, we only need one OutputSection class. llvm-svn: 296127
-
Daniel Sanders authored
The 'Kind' member used in RTTI for InstructionPredicateMatcher was not initialized but went undetected since I always ended up with the correct value. llvm-svn: 296126
-
Simon Dardis authored
Previously LLVM was assuming 32-bit signed immediates which results in and with a bitmask that has bit 31 set to incorrectly include bits 63-32 in the result. After applying this patch I can now compile all of the FreeBSD mips assembly code with clang. This issue also affects the nor, slt and sltu macros and I will fix those in a separate review. Patch By: Alexander Richardson Commit message reformatted by sdardis. Reviewers: atanasyan, theraven, sdardis Differential Revision: https://reviews.llvm.org/D30298 llvm-svn: 296125
-
Rafael Espindola authored
llvm-svn: 296124
-
Rafael Espindola authored
llvm-svn: 296123
-
Diana Picus authored
Same as selecting G_LOAD. llvm-svn: 296122
-
Daniel Sanders authored
Summary: This makes more important rules have priority over less important rules. For example, '%a = G_ADD $b:s64, $c:s64' has priority over '%a = G_ADD $b:s32, $c:s32'. Previously these rules were emitted in the correct order by chance. NFC in this patch but it is required to make the next patch work correctly. Depends on D29710 Reviewers: t.p.northover, ab, qcolombet, aditya_nandakumar, rovka Reviewed By: ab, rovka Subscribers: javed.absar, dberris, llvm-commits, kristof.beyls Differential Revision: https://reviews.llvm.org/D29711 llvm-svn: 296121
-
Diana Picus authored
The test was using a size of 8 for loading/storing pointers. It should be 4. llvm-svn: 296120
-
Omair Javaid authored
Please look at below differential link for upstream discussion. Differential revision: https://reviews.llvm.org/D29669 llvm-svn: 296119
-
Rafael Espindola authored
llvm-svn: 296118
-
Rafael Espindola authored
llvm-svn: 296117
-
Serge Pavlov authored
Recommits r295975 (Added regression tests), reverted in r295975, because it did not work on non-X86 targets. llvm-svn: 296116
-
Diana Picus authored
Same as the ones for loads. llvm-svn: 296115
-
Rafael Espindola authored
llvm-svn: 296114
-
Eric Liu authored
llvm-svn: 296113
-
Simon Dardis authored
Attempt to fix failing test. llvm-svn: 296112
-
Diana Picus authored
llvm-svn: 296111
-
Eric Liu authored
Reviewers: hokein Reviewed By: hokein Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D30328 llvm-svn: 296110
-
Simon Pilgrim authored
llvm-svn: 296109
-
Diana Picus authored
Allow the same types that we allow for loads. llvm-svn: 296108
-
Pavel Labath authored
In LLVM r296049, IPDBSession::getGlobalScope lost its constness. Adjust the unittest to account for that. llvm-svn: 296107
-
Simon Dardis authored
Corresponding test. llvm-svn: 296106
-
Simon Dardis authored
Make the MIPS disassembler consistent with the other targets in returning a Size of zero when the input buffer cannot contain an instruction due to it's size. Previously it reported the minimum instruction size when it failed due to the buffer not being big enough for an instruction causing llvm-objdump to crash when disassembling all sections. Reviewers: slthakur Differential Revision: https://reviews.llvm.org/D29984 llvm-svn: 296105
-
Diana Picus authored
This reverts commit r296103 because the test broke on one of the bots. Sorry! llvm-svn: 296104
-
Diana Picus authored
Allow the same types that we allow for loads. llvm-svn: 296103
-
Simon Pilgrim authored
The current pattern for setting bits in range is typically: Mask |= APInt::getBitsSet(MaskSizeInBits, LoPos, HiPos); Which can be particularly slow for large APInts (MaskSizeInBits > 64) as they require the allocation memory for the temporary variable. This is one of the key compile time issues identified in PR32037. This patch adds the APInt::setBits() helper method which avoids the temporary memory allocation completely, this first implementation uses setBit() internally instead but already significantly reduces the regression in PR32037 (~10% drop). Additional optimization may be possible. I investigated whether there is need for APInt::clearBits() and APInt::flipBits() equivalents but haven't seen these patterns to be particularly common, but reusing the code would be trivial. Differential Revision: https://reviews.llvm.org/D30265 llvm-svn: 296102
-
Pavel Labath authored
Summary: QPassSignals package allows lldb client to tell lldb-server to ignore certain types of signals and re-inject them back to inferior without stopping execution. Reviewers: jmajors, labath Subscribers: danalbert, srhines, emaste, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D30286 Author: Eugene Zemtsov <ezemtsov@google.com> llvm-svn: 296101
-
Daniel Marjamaki authored
Differential Revision: https://reviews.llvm.org/D27048 llvm-svn: 296100
-
Roger Ferrer Ibanez authored
Fix an assertion that is hit when a redeclaration with differing types only differs in the unaligned type-qualifier. Differential Revision: https://reviews.llvm.org/D29986 llvm-svn: 296099
-
Kevin Funk authored
Reviewers: silvas, rizsotto.mailinglist, sergio.martins Reviewed By: rizsotto.mailinglist Differential Revision: https://reviews.llvm.org/D30252 llvm-svn: 296098
-
George Rimar authored
Feature is used for producing static-linked PIE executables (https://gcc.gnu.org/ml/gcc/2015-06/msg00008.html) And was implemented in GNU ld https://gcc.gnu.org/ml/gcc/2015-08/msg00099.html I also found it in linux kernel build system, though I think that x86/x64 bootloader does not really rely on it. Seems it used for PPC though. Differential revision: https://reviews.llvm.org/D30258 llvm-svn: 296097
-
Justin Bogner authored
This was missed in r293110. llvm-svn: 296096
-