- Jul 10, 2020
-
-
Louis Dionne authored
-
Louis Dionne authored
-
Hiroshi Yamauchi authored
-
Sergej Jaskiewicz authored
Summary: This allows using lit substitutions in the `COMPILER_RT_EMULATOR` variable. (For reference, the ability to expand substitutions recursively has been introduced in https://reviews.llvm.org/D76178.) Reviewers: phosek, compnerd Reviewed By: compnerd Subscribers: dberris, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D83489
-
Louis Dionne authored
This allows passing parameters to the test suites without using LLVM_LIT_ARGS. The problem is that we sometimes want to set some Lit arguments on the CMake command line, but the Lit parameters in a CMake cache file. If the only knob to do that is LLVM_LIT_ARGS, the command-line entry overrides the cache one, and the parameters set by the cache are ignored. This fixes a current issue with the build bots that they completely ignore the 'std' param set by Lit, because other Lit arguments are provided via LLVM_LIT_ARGS on the CMake command-line.
-
Sergej Jaskiewicz authored
Summary: Right now the lit config builds up an environment that the tests will be run in. However, it does it from scratch instead of adding new variables to the parent process environment. This may (and does) result in strange behavior when running tests with an executor (i. e. with the `COMPILER_RT_EMULATOR` CMake variable set to something), since the executor may need some of the parent process's environment variables. Here this is fixed. Reviewers: compnerd, phosek Reviewed By: compnerd Subscribers: dberris, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D83486
-
Fred Riss authored
-
Sergej Jaskiewicz authored
Summary: These changes are necessary to support remote running compiler-rt tests that were compiled on Windows. Most of the code here has been copy-pasted from other lit configs. Why do we remove the conversions to ASCII in the crt config? We set the `universal_newlines` argument to `True` in `Popen` instead. This is supported in both Python 2.7 and 3, is easier (no need to do the `str(dir.decode('ascii'))` dance) and less error prone. Also, this is necessary because if the config is executed on Windows, and `execute_external` is `True`, we take the branch `if sys.platform in ['win32'] and execute_external`, and if we use Python 3, then the `dir` variable is a byte-like object, not str, but the ``replace method on byte-like objects requires its arguments to also be byte-like objects, which is incompatible with Python 2 etc etc. It is a lot simpler to just work with strings in the first place, which is achieved by setting `universal_newlines` to `True`. As far as I understand, this way wasn't taken because of the need to support Python <2.7, but this is not the case now. Reviewers: compnerd, phosek, weimingz Reviewed By: compnerd Subscribers: dberris, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D83485 -
Nikita Popov authored
The code currently checks whether the intersection has one of TBAA, Scope or NoAlias unset -- however, those might have already been unset in the first place, in which case we will unnecessarily report a change. Instead, compare the intersection result to the original AAInfo. This makes for a 0.5% geomean compile-time saving on CTMark. Differential Revision: https://reviews.llvm.org/D83430
-
Stefan Pintilie authored
Currently the instruction paddi always takes s34imm as the type for the 34 bit immediate. However, the PC Relative form of the instruction should not produce the same fixup as the non PC Relative form. This patch splits the s34imm type into s34imm and s34imm_pcrel so that two different fixups can be emitted. Reviewed By: kamaub, nemanjai Differential Revision: https://reviews.llvm.org/D83255
-
Florian Hahn authored
Some of the tests in the llvm/test/Transforms/IPConstantProp directory actually only use -ipsccp. Those tests belong to the other (IP)SCCP tests in llvm/test/Transforms/SCCP/ and this commits moves them there to avoid confusion with IPConstantProp.
-
- Jul 09, 2020
-
-
Hans Wennborg authored
Revert 51b0da73 "Recommit "[X86] Merge the FEATURE_64BIT and FEATURE_EM64T bits in X86TargetParser.def."" It gets miscompiled with GCC 5.3, causing Clang to crash with "error: unknown target CPU 'x86-64'" See the llvm-commits thread for reproduction steps. This reverts commit 51b0da73.
-
Dmitri Gribenko authored
Summary: We would like to use NumericLiteralParser in the implementation of the syntax tree builder, and plumbing a preprocessor there seems inconvenient and superfluous. Reviewers: eduucaldas Reviewed By: eduucaldas Subscribers: gribozavr2, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D83480
-
Anatoly Trosinenko authored
Assembler output is checked against msp430-gcc 9.2.0.50 from TI. Reviewed By: asl Differential Revision: https://reviews.llvm.org/D82646
-
George Mitenkov authored
This patch adds type conversion for 4 SPIR-V types: array, runtime array, pointer and struct. This conversion is integrated using a separate function `populateSPIRVToLLVMTypeConversion()` that adds new type conversions. At the moment, this is a basic skeleton that allows to perfom conversion from SPIR-V array, runtime array and pointer types to LLVM typesystem. There is no support of array strides or storage classes. These will be supported on the case by case basis. Reviewed By: antiagainst Differential Revision: https://reviews.llvm.org/D83399
-
Zhi Zhuang authored
in places such as constant folding Previously some places that should have handled __builtin_expect_with_probability is missing, so in some case it acts differently than __builtin_expect. For example it was not handled in constant folding, thus in the following program, the "if" condition should be constantly true and folded, but previously it was not handled and cause warning "control may reach end of non-void function" (while __builtin_expect does not): __attribute__((noreturn)) extern void bar(); int foo(int x, int y) { if (y) { if (__builtin_expect_with_probability(1, 1, 1)) bar(); } else return 0; } Now it's fixed. Differential Revisions: https://reviews.llvm.org/D83362 -
Stefan Pintilie authored
The R_PPC64_REL24 is used in function calls when the caller requires a valid TOC pointer. If the callee shares the same TOC or does not clobber the TOC pointer then a direct call can be made. If the callee does not share the TOC a thunk must be added to save the TOC pointer for the caller. Up until PC Relative was introduced all local calls on medium and large code models were assumed to share a TOC. This is no longer the case because if the caller requires a TOC and the callee is PC Relative then the callee can clobber the TOC even if it is in the same DSO. This patch is to add support for a TOC caller calling a PC Relative callee that clobbers the TOC. Reviewed By: sfertile, MaskRay Differential Revision: https://reviews.llvm.org/D82950
-
George Mitenkov authored
Added `getSizeInBytes()` function as a class member to several SPIR-V types: `ScalarType`, `ArrayType` and `VectorType`. This function aims at exposing the functionality of `getTypeNumBytes()` from `SPIRVLowering.cpp`. Support of more types will be added on demand. Reviewed By: antiagainst Differential Revision: https://reviews.llvm.org/D83285
-
Eric Schweitz authored
[flang] partially revert upstreamed code to support complex values in runtime support to avoid warnings.
-
Diogo Sampaio authored
-
Matt Arsenault authored
The unfortunate split between finalizeLowering and the selector pass means there's a point where the verifier fails. The DAG selector pass skips the verifier, but this seems to not work when using the GlobalISel fallback.
-
Simon Pilgrim authored
-
David Green authored
This option was added a while back, to help improve AA around pointer phi loops. It looks for phi(gep(phi, const), x) loops, checking if x can then prove more precise aliasing info. Differential Revision: https://reviews.llvm.org/D82998
-
Matt Arsenault authored
Since none of these users really care about the actual type, hide the type under a new size-getting attribute to go along with hasPassPointeeByValueAttr. This will work better for the future byref attribute, which may end up only tracking the byte size and not the IR type. We currently have 3 parameter attributes that should carry the type (technically inalloca does not yet). The APIs are somewhat awkward since preallocated/inalloca piggyback on byval in some places, but in others are treated as distinct attributes. Since these are all mutually exclusive, we should probably just merge all the attribute infrastructure treating these as totally distinct attributes.
-
Gabor Marton authored
Summary: The default CTUImportThreshold (8) seems to be too conservative with C projects. We increase this value to 24 and we introduce another threshold for C++ source files (defaulted to 8) because their AST is way more compilcated than C source files. Differential Revision: https://reviews.llvm.org/D83475
-
Luboš Luňák authored
Allow to build PCH's (with -building-pch-with-obj and the extra .o file) with -fmodules-codegen -fmodules-debuginfo to allow emitting shared code into the extra .o file, similarly to how it works with modules. A bit of a misnomer, but the underlying functionality is the same. This saves up to 20% of build time here. The patch is fairly simple, it basically just duplicates -fmodules checks to also alternatively check -building-pch-with-obj. This already got committed as cbc9d22e, but then got reverted in 7ea9a6e0 because of PR44953, as discussed in D74846. This is a corrected version which does not include two places for the PCH case that aren't included in the modules -fmodules-codegen path either. Differential Revision: https://reviews.llvm.org/D69778
-
Simon Pilgrim authored
If we're extracting a subvector from a shuffle that is shuffling entire subvectors we can peek through and extract the subvector from the shuffle source instead. This helps remove some cases where concat_vectors(extract_subvector(),extract_subvector()) legalizations has resulted in BLEND/VPERM2F128 shuffles of the subvectors.
-
Simon Pilgrim authored
Avoids unnecessary APInt copies and silences clang tidy warning.
-
Sam Elliott authored
Since the `RISCVExpandPseudo` pass has been split from `RISCVExpandAtomicPseudo` pass, it would be nice to run the former as early as possible (The latter has to be run as late as possible to ensure correctness). Running earlier means we can reschedule these pairs as we see fit. Running earlier in the machine pass pipeline is good, but would mean teaching many more passes about `hasLabelMustBeEmitted`. Splitting the basic blocks also pessimises possible optimisations because some optimisations are MBB-local, and others are disabled if the block has its address taken (which is notionally what `hasLabelMustBeEmitted` means). This patch uses a new approach of setting the pre-instruction symbol on the AUIPC instruction to a temporary symbol and referencing that. This avoids splitting the basic block, but allows us to reference exactly the instruction that we need to. Notionally, this approach seems more correct because we do actually want to address a specific instruction. This then allows the pass to be moved much earlier in the pass pipeline, before both scheduling and register allocation. However, to do so we must leave the MIR in SSA form (by not redefining registers), and so use a virtual register for the intermediate value. By using this virtual register, this pass now has to come before register allocation. Reviewed By: luismarques, asb Differential Revision: https://reviews.llvm.org/D82988
-
dfukalov authored
Summary: The test case started to hoist bitcasts to upper BB after D81730. Reverted unintentional logic change. Some instructions may have zero cost but will not be hoisted by different limitation so should be counted for threshold. Reviewers: aprantl, arsenm, nhaehnle Reviewed By: aprantl Subscribers: wdng, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D82761
-
Benjamin Kramer authored
DWARFDebugPubTable.cpp:80:31: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
-
Igor Kudrin authored
The patch adds checking for various potential issues in parsing name lookup tables and reporting them as recoverable errors, similarly as we do for other tables. Differential Revision: https://reviews.llvm.org/D83050
-
Igor Kudrin authored
The parsing method did not check reading errors and might easily fall into an infinite loop on an invalid input because of that. Differential Revision: https://reviews.llvm.org/D83049
-
Florian Hahn authored
Currently SCCP does not combine the information of conditions joined by AND in the true branch or OR in the false branch. For branches on AND, 2 copies will be inserted for the true branch, with one being the operand of the other as in the code below. We can combine the information using intersection. Note that for the OR case, the copies are inserted in the false branch, where using intersection is safe as well. define void @foo(i32 %a) { entry: %lt = icmp ult i32 %a, 100 %gt = icmp ugt i32 %a, 20 %and = and i1 %lt, %gt ; Has predicate info ; branch predicate info { TrueEdge: 1 Comparison: %lt = icmp ult i32 %a, 100 Edge: [label %entry,label %true] } %a.0 = call i32 @llvm.ssa.copy.140247425954880(i32 %a) ; Has predicate info ; branch predicate info { TrueEdge: 1 Comparison: %gt = icmp ugt i32 %a, 20 Edge: [label %entry,label %false] } %a.1 = call i32 @llvm.ssa.copy.140247425954880(i32 %a.0) br i1 %and, label %true, label %false true: ; preds = %entry call void @use(i32 %a.1) %true.1 = icmp ne i32 %a.1, 20 call void @use.i1(i1 %true.1) ret void false: ; preds = %entry call void @use(i32 %a.1) ret void } Reviewers: efriedma, davide, mssimpso, nikic Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D77808 -
Benjamin Kramer authored
-
Kirill Bobyrev authored
Reviewers: sammccall Reviewed By: sammccall Subscribers: ormris, ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D82938
-
Xing GUO authored
Functions in DWARFYML::FixupVisitor are declared as virtual functions in its base class DWARFYAML::Visitor. We should use the mordern "override" keyword instead of "virtual" for virtual functions in subclasses for better safety. Besides, the visibility is changed from private to protected to make it consistent with DWARFYAML::FixupVisitor class and DWARFYAML::Visitor class. Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D83452
-
Paul Walker authored
When adding support for scalable vector masked loads and stores we accidently opened up likewise for fixed length vectors. This patch restricts support to scalable vectors only, thus ensuring fixed length vectors are treated the same regardless of SVE support. Differential Revision: https://reviews.llvm.org/D83341
-
Paul Walker authored
Fixed length vector code generation for SVE does not yet custom lower BUILD_VECTOR and instead relies on expansion. At the same time custom lowering for VECTOR_SHUFFLE is also not available so this patch updates isShuffleMaskLegal to reject vector types that require SVE. Related to this it also prevents the merging of stores after legalisation because this only works when BUILD_VECTOR is either legal or can be elminated. When this is not the case the code generator enters an infinite legalisation loop. Differential Revision: https://reviews.llvm.org/D83408
-
Georgii Rymar authored
This allows to propagate an error and report a warning properly. Differential revision: https://reviews.llvm.org/D83393
-