- 11 Dec, 2019 3 commits
-
-
Tom Stellard authored
Reviewers: hansw, jdoerfert Subscribers: sylvestre.ledru, mgorny, hans, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D70460 (cherry picked from commit edf6717d)
-
Suyog Sarda authored
```--------------------------------------------------------------------- r372480 | ssarda | 2019-09-21 11:16:37 -0700 (Sat, 21 Sep 2019) | 9 lines SROA: Check Total Bits of vector type While Promoting alloca instruction of Vector Type, Check total size in bits of its slices too. If they don't match, don't promote the alloca instruction. Bug : https://bugs.llvm.org/show_bug.cgi?id=42585 ``` ---------------------------------------------------------------------
-
Richard Smith authored
```--------------------------------------------------------------------- r371557 | rsmith | 2019-09-10 14:24:09 -0700 (Tue, 10 Sep 2019) | 7 lines When evaluating a __builtin_constant_p conditional, always enter constant-folding mode regardless of the original evaluation mode. In order for this to be correct, we need to track whether we're checking for a potential constant expression or checking for undefined behavior separately from the evaluation mode enum, since we don't want to clobber those states when entering constant-folding mode. ``` ---------------------------------------------------------------------
-
- 05 Dec, 2019 1 commit
-
-
Hans Wennborg authored
See PR43425: https://bugs.llvm.org/show_bug.cgi?id=43425 When writing profile data on Windows we were opening profile file with exclusive read/write access. In case we are trying to write to the file from multiple processes simultaneously, subsequent calls to CreateFileA would return INVALID_HANDLE_VALUE. To fix this, I changed to open without exclusive access and then take a lock. Patch by Michael Holman! Differential revision: https://reviews.llvm.org/D70330 (cherry picked from commit 900d8a9a)
-
- 04 Dec, 2019 3 commits
-
-
Nemanja Ivanovic authored
These two intrinsics are lowered to calls so should prevent the formation of CTR loops. In a subsequent patch, we will handle all currently known intrinsics and prevent the formation of HW loops if any unknown intrinsics are encountered. Differential revision: https://reviews.llvm.org/D68841 (cherry picked from commit 97e36260)
-
Than McIntosh authored
```--------------------------------------------------------------------- r366572 | thanm | 2019-07-19 06:13:54 -0700 (Fri, 19 Jul 2019) | 12 lines [NFC] include cstdint/string prior to using uint8_t/string Summary: include proper header prior to use of uint8_t typedef and std::string. Subscribers: llvm-commits Reviewers: cherry Tags: #llvm Differential Revision: https://reviews.llvm.org/D64937 ``` ---------------------------------------------------------------------
-
Luis Marques authored
```--------------------------------------------------------------------- r370113 | luismarques | 2019-08-27 14:37:57 -0700 (Tue, 27 Aug 2019) | 5 lines [RISCV] Implement RISCVRegisterInfo::getPointerRegClass Fixes bug 43041 Differential Revision: https://reviews.llvm.org/D66752 ``` ---------------------------------------------------------------------
-
- 03 Dec, 2019 4 commits
-
-
Reid Kleckner authored
Fixes PR43744 Differential Revision: https://reviews.llvm.org/D69968 (cherry picked from commit ce0f3ee5)
-
Nemanja Ivanovic authored
When converting reg+reg shifts to reg+imm rotates, we neglect to consider the CodeGenOnly versions of the 32-bit shift mnemonics. This means we produce a rotate with missing operands which causes a crash. Committing this fix without review since it is non-controversial that the list of mnemonics to consider should include the 64-bit aliases for the exact mnemonics. Fixes PR44183. (cherry picked from commit 241cbf20)
-
Stefan Pintile authored
The Overflow version of XO-Form instruction uses the SO, OV and OV32 special registers. This changes modifies existing multiclasses and instruction definitions to allow for the use of the XER register to record the various types if overflow from possible add, subtract and multiply instructions. It then modifies the existing instructions as to use these multiclasses as needed. Patch By: Kamau Bridgeman Differential Revision: https://reviews.llvm.org/D66902 (cherry picked from commit fdf3d176)
-
Ayke van Laethem authored
The patch in https://reviews.llvm.org/D64077 causes a build failure because both the Defined and SharedSymbol classes are bigger than 80 bytes on MinGW 8. This patch fixes this build failure by changing the type of the bitfields. It is a similar change to the bitfield changes in https://reviews.llvm.org/D64238, but instead of changing to bool I decided to use uint8_t because one of the bitfields takes up two bits instead of one. Note: the patch is slightly different from the one reviewed in Phabricator, but it is a trivial change to align it with LLVM master instead of LLVM 9. Also, it passes all lld tests. Differential Revision: https://reviews.llvm.org/D70266 (cherry picked from commit 57776f71)
-
- 27 Nov, 2019 6 commits
-
-
Leonard Chan authored
```--------------------------------------------------------------------- r373389 | leonardchan | 2019-10-01 13:30:46 -0700 (Tue, 01 Oct 2019) | 10 lines [ASan] Make GlobalsMD member a const reference. PR42924 points out that copying the GlobalsMetadata type during construction of AddressSanitizer can result in exteremely lengthened build times for translation units that have many globals. This can be addressed by just making the GlobalsMD member in AddressSanitizer a reference to avoid the copy. The GlobalsMetadata type is already passed to the constructor as a reference anyway. Differential Revision: https://reviews.llvm.org/D68287 ``` ---------------------------------------------------------------------
-
Alexey Bataev authored
```--------------------------------------------------------------------- r371548 | abataev | 2019-09-10 12:16:56 -0700 (Tue, 10 Sep 2019) | 10 lines Fix for PR43175: compiler crash when trying to emit noncapturable constant. If the constexpr variable is partially initialized, the initializer can be emitted as the structure, not as an array, because of some early optimizations. The llvm variable gets the type from this constant and, thus, gets the type which is pointer to struct rather than pointer to an array. We need to convert this type to be truely array, otherwise it may lead to the compiler crash when trying to emit array subscript expression. ``` ---------------------------------------------------------------------
-
Sanjay Patel authored
The store splitting transform was assuming a simple type (MVT), but that's not necessarily the case as shown in the test. (cherry picked from commit 8e34dd94)
-
Serge Guelton authored
```--------------------------------------------------------------------- r372281 | serge_sans_paille | 2019-09-18 17:54:40 -0700 (Wed, 18 Sep 2019) | 8 lines Initialize all fields in ABIArgInfo. Due to usage of an uninitialized fields, we end up with a Conditional jump or move depends on uninitialised value Fixes https://bugs.llvm.org/show_bug.cgi?id=40547 Commited on behalf of Martin Liska <mliska@suse.cz> ``` ---------------------------------------------------------------------
-
Amy Kwan authored
On RHEL, the OS tooling (ar, ranlib) is not deterministic by default. Therefore, we cannot get bit-for-bit identical builds. The goal of this patch is that it adds the flags required to force determinism. Differential Revision: https://reviews.llvm.org/D64817 (cherry picked from commit c84c62c5)
-
Michal Gorny authored
```--------------------------------------------------------------------- r372835 | mgorny | 2019-09-25 02:47:35 -0700 (Wed, 25 Sep 2019) | 12 lines [lldb] [cmake] Fix installing Python modules on systems using /usr/lib Fix installing Python modules on systems that use /usr/lib for Python while installing other libraries in /usr/lib64. Rewrite CMake logic to query correct directories from Python, similarly to how prepare_binding_Python.py does it. Furthermore, change the regex used in get_relative_lib_dir.py to allow 'lib' without suffix. I think that the code can be further improved but I'd like to take this enterprise in smaller steps in case one of them breaks something. Differential Revision: https://reviews.llvm.org/D67890 ``` ---------------------------------------------------------------------
-
- 26 Nov, 2019 1 commit
-
-
serge-sans-paille authored
This is a follow-up to https://reviews.llvm.org/D69793 (cherry picked from commit d5904988)
-
- 25 Nov, 2019 2 commits
-
-
Nick Desaulniers authored
```--------------------------------------------------------------------- r373655 | nickdesaulniers | 2019-10-03 13:10:02 -0700 (Thu, 03 Oct 2019) | 16 lines [AArch64InstPrinter] prefer bfi to bfc for < armv8.2-a Summary: Fixes pr/42576. Link: https://github.com/ClangBuiltLinux/linux/issues/697 Reviewers: t.p.northover Reviewed By: t.p.northover Subscribers: kristof.beyls, hiraditya, llvm-commits, srhines Tags: #llvm Differential Revision: https://reviews.llvm.org/D68356 ``` ---------------------------------------------------------------------
-
Reid Kleckner authored
```--------------------------------------------------------------------- r372178 | rnk | 2019-09-17 13:29:10 -0700 (Tue, 17 Sep 2019) | 15 lines Ignore exception specifier mismatch when merging redeclarations Exception specifiers are now part of the function type in C++17. Normally, it is illegal to redeclare the same function or specialize a template with a different exception specifier, but under -fms-compatibility, we accept it with a warning. Without this change, the function types would not match due to the exception specifier, and clang would claim that the types were "incompatible". Now we emit the warning and merge the redeclaration as we would in C++14 and earlier. Fixes PR42842, which is about compiling _com_ptr_t in C++17. Based on a patch by Alex Fusco <alexfusco@google.com>! Differential Revision: https://reviews.llvm.org/D67590 ``` ---------------------------------------------------------------------
-
- 23 Nov, 2019 1 commit
-
-
Tom Stellard authored
Summary: This also changes the test-release.sh script to build using the monorepo layout instead of copying sub-projects into llvm/tools or llvm/projects. Reviewers: jdoerfert, hans Reviewed By: hans Subscribers: hans, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D70353 (cherry picked from commit c97f3038)
-
- 21 Nov, 2019 5 commits
-
-
Paul Robinson authored
```--------------------------------------------------------------------- r373220 | probinson | 2019-09-30 08:11:23 -0700 (Mon, 30 Sep 2019) | 12 lines [SSP] [3/3] cmpxchg and addrspacecast instructions can now trigger stack protectors. Fixes PR42238. Add test coverage for llvm.memset, as proxy for all llvm.mem* intrinsics. There are two issues here: (1) they could be lowered to a libc call, which could be intercepted, and do Bad Stuff; (2) with a non-constant size, they could overwrite the current stack frame. The test was mostly written by Matt Arsenault in r363169, which was later reverted; I tweaked what he had and added the llvm.memset part. Differential Revision: https://reviews.llvm.org/D67845 ``` ---------------------------------------------------------------------
-
Paul Robinson authored
```--------------------------------------------------------------------- r373219 | probinson | 2019-09-30 08:08:38 -0700 (Mon, 30 Sep 2019) | 3 lines [SSP] [2/3] Refactor an if/dyn_cast chain to switch on opcode. NFC Differential Revision: https://reviews.llvm.org/D67844 ``` ---------------------------------------------------------------------
-
Paul Robinson authored
```--------------------------------------------------------------------- r373216 | probinson | 2019-09-30 08:01:35 -0700 (Mon, 30 Sep 2019) | 7 lines [SSP] [1/3] Revert "StackProtector: Use PointerMayBeCaptured" "Captured" and "relevant to Stack Protector" are not the same thing. This reverts commit f29366b1. aka r363169. Differential Revision: https://reviews.llvm.org/D67842 ``` --------------------------------------------------------------------- To avoid changing the ABI, the VisitedPHIs member from the StackProtector class was replaced with a local variable in StackProtector::RequiresStackProtector().
-
Michał Górny authored
Restrict building the readline override to Linux only. It both does not build on *BSD systems, and is largely irrelevant since they default to using libedit over readline anyway. This restores the behavior of the old readline override that also was built only on Linux. Differential Revision: https://reviews.llvm.org/D69846 (cherry picked from commit df3ae1eb)
-
serge-sans-paille authored
Fix https://bugs.llvm.org/show_bug.cgi?id=43830 while avoiding polluting the global Python namespace. This both reverts r357277 to rebundle a version of Python's readline module based on libedit. However, this patch also provides two improvements over the previous implementation: 1. use PyMem_RawMalloc instead of PyMem_Malloc, as expected by PyOS_Readline (prevents to segfault upon exit of interactive session) 2. patch the readline module upon embedded interpreter loading, instead of patching it globally, which should prevent any side effect on other modules/packages 3. only activate the patched module if libedit is actually linked in lldb Differential Revision: https://reviews.llvm.org/D69793 (cherry picked from commit 9357b5d0)
-
- 20 Nov, 2019 5 commits
-
-
Wei Mi authored
```--------------------------------------------------------------------- r370547 | wmi | 2019-08-30 16:01:22 -0700 (Fri, 30 Aug 2019) | 24 lines [GVN] Verify value equality before doing phi translation for call instruction This is an updated version of https://reviews.llvm.org/D66909 to fix PR42605. Basically, current phi translatation translates an old value number to an new value number for a call instruction based on the literal equality of call expression, without verifying there is no clobber in between. This is incorrect. To get a finegrain check, use MachineDependence analysis to do the job. However, this is still not ideal. Although given a call instruction, `MemoryDependenceResults::getCallDependencyFrom` returns identical call instructions without clobber in between using MemDepResult with its DepType to be `Def`. However, identical is too strict here and we want it to be relaxed a little to consider phi-translation -- callee is the same, param operands can be different. That means changing the semantic of `MemDepResult::Def` and I don't know the potential impact. So currently the patch is still conservative to only handle MemDepResult::NonFuncLocal, which means the current call has no function local clobber. If there is clobber, even if the clobber doesn't stand in between the current call and the call with the new value, we won't do phi-translate. Differential Revision: https://reviews.llvm.org/D67013 ``` ---------------------------------------------------------------------
-
Aaron Puchert authored
```--------------------------------------------------------------------- r373148 | aaronpuchert | 2019-09-28 06:28:50 -0700 (Sat, 28 Sep 2019) | 9 lines Don't install example analyzer plugins Summary: Fixes PR43430. Reviewers: hintonda, NoQ, Szelethus, lebedev.ri Reviewed By: lebedev.ri Differential Revision: https://reviews.llvm.org/D68172 ``` ---------------------------------------------------------------------
-
Thomas Lively authored
Summary: Rolls back the remaining bad optimizations introduced in eb15d001. Some of them were already rolled back in e661f946 and this finishes the job. Fixes https://bugs.llvm.org/show_bug.cgi?id=44012. Reviewers: dschuff, aheejin Subscribers: sbc100, jgravelle-google, hiraditya, sunfish, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D70347 (cherry picked from commit 194d7ec0)
-
Tom Stellard authored
This makes it possible for this step to work during pull requests.
-
Tom Stellard authored
This prevents the tests from being run twice on pull requests since pull requests first require creating a new branch (which was also triggering CI runs).
-
- 19 Nov, 2019 1 commit
-
-
Fangrui Song authored
```--------------------------------------------------------------------- r367981 | maskray | 2019-08-05 23:25:32 -0700 (Mon, 05 Aug 2019) | 27 lines [Driver] Prioritize SYSROOT/usr/include over RESOURCE_DIR/include on linux-musl On a musl-based Linux distribution, stdalign.h stdarg.h stdbool.h stddef.h stdint.h stdnoreturn.h are expected to be provided by musl (/usr/include), instead of RESOURCE_DIR/include. Reorder RESOURCE_DIR/include to fix the search order problem. (Currently musl doesn't provide stdatomic.h. stdatomic.h is still found in RESOURCE_DIR/include.) gcc on musl has a similar search order: ``` /usr/lib/gcc/x86_64-alpine-linux-musl/8.3.0/../../../../include/c++/8.3.0 /usr/lib/gcc/x86_64-alpine-linux-musl/8.3.0/../../../../include/c++/8.3.0/x86_64-alpine-linux-musl /usr/lib/gcc/x86_64-alpine-linux-musl/8.3.0/../../../../include/c++/8.3.0/backward /usr/local/include /usr/include/fortify /usr/include /usr/lib/gcc/x86_64-alpine-linux-musl/8.3.0/include ``` This is different from a glibc-based distribution where RESOURCE_DIR/include is placed before SYSROOT/usr/include. According to the maintainer of musl: > musl does not support use/mixing of compiler-provided std headers with its headers, and intentionally has no mechanism for communicating with such headers as to which types have already been defined or still need to be defined. If the current include order, with clang's headers before the libc ones, works in some situations, it's only by accident. Reviewed by: phosek Differential Revision: https://reviews.llvm.org/D65699 ``` ---------------------------------------------------------------------
-
- 18 Nov, 2019 2 commits
-
-
Tom Stellard authored
Initial tests check for ABI changes and build/test llvm, clang, and lld.
-
Wang, Pengfei authored
Summary: This is a bug fix for further issues in PR43585. Reviewers: rnk, RKSimon, craig.topper, andrew.w.kaylor Subscribers: hiraditya, llvm-commits, annita.zhang Tags: #llvm Differential Revision: https://reviews.llvm.org/D70224 (cherry picked from commit 8723b95c)
-
- 16 Nov, 2019 1 commit
-
-
Sam Elliott authored
```--------------------------------------------------------------------- r375403 | lenary | 2019-10-21 03:00:34 -0700 (Mon, 21 Oct 2019) | 30 lines [MemCpyOpt] Fixing Incorrect Code Motion while Handling Aggregate Type Values Summary: When MemCpyOpt is handling aggregate type values, if an instruction (let's call it P) between the targeting load (L) and store (S) clobbers the source pointer of L, it will try to hoist S before P. This process will also hoist S's data dependency instructions. However, the current implementation has a bug that if one of S's dependency instructions is //also// a user of P, MemCpyOpt will not prevent it from being hoisted above P and cause a use-before-define error. For example, in the newly added test file (i.e. `aggregate-type-crash.ll`), it will try to hoist both `store %my_struct %1, %my_struct* %3` and its dependent, `%3 = bitcast i8* %2 to %my_struct*`, above `%2 = call i8* @my_malloc(%my_struct* %0)`. Creating the following BB: ``` entry: %1 = bitcast i8* %4 to %my_struct* %2 = bitcast %my_struct* %1 to i8* %3 = bitcast %my_struct* %0 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %2, i8* align 4 %3, i64 8, i1 false) %4 = call i8* @my_malloc(%my_struct* %0) ret void ``` Where there is a use-before-define error between `%1` and `%4`. Update: The compiler for the Pony Programming Language [also encounter the same bug](https://github.com/ponylang/ponyc/issues/3140) Patch by Min-Yih Hsu (myhsu) Reviewers: eugenis, pcc, dblaikie, dneilson, t.p.northover, lattner Reviewed By: eugenis Subscribers: lenary, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D66060 ``` ---------------------------------------------------------------------
-
- 15 Nov, 2019 2 commits
-
-
Tom Stellard authored
This change introduced a use of std::make_unique() which some compilers reject in c++11 mode.
-
Tom Stellard authored
This still fixes PR43479, but does it in a way that does not change the libLLVM-9.so ABI.
-
- 13 Nov, 2019 3 commits
-
-
Amy Huang authored
-
Amy Huang authored
Summary: Add instruction marker to MachineInstr ExtraInfo. This does almost the same thing as Pre/PostInstrSymbols, except that it doesn't create a label until printing instructions. This allows for labels to be put around instructions that are deleted/duplicated somewhere. Use this marker to track heap alloc site call instructions. Reviewers: rnk Subscribers: MatzeB, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D69536 cherry picked from 74204304 with some modifications.
-
Leonard Chan authored
This is a fix for PR43315. An assertion error is hit for this minimal example: ``` //clang -cc1 -triple x86_64-- -S tstVMStructRC-min.cpp int (a b)(); // Assertion `Chunk.Kind == DeclaratorChunk::Function' failed. ``` This is because we do not cover the case in the FunctionTypeUnwrapper where it receives a MacroQualifiedType. We have not run into this earlier because this is a unique case where the __attribute__ contains both __cdecl__ and __regparm__ (in that order), and we are compiling for x86_64. Changing the architecture or the order of __cdecl__ and __regparm__ does not raise the assertion. Differential Revision: https://reviews.llvm.org/D67992 (cherry picked from commit e278c138)
-