- Jul 23, 2020
-
-
Matt Arsenault authored
-
Thomas Lively authored
Implementing new functionality tested in this file requires adding new tests for many IR addressing patterns, which can be a large maintenance burden. This patch makes adding tests easier by switching to using autogenerated checks. This patch also removes the testing mode that has simd128 disabled because it would produce very large checks and is not particularly interesting. Differential Revision: https://reviews.llvm.org/D84288
-
Tarindu Jayatilaka authored
(This reverts commit a5e01947, and corrects author). Rename the pass to be able to extend it to function properties other than inliner features. Reviewed By: mtrofin Differential Revision: https://reviews.llvm.org/D82044
-
Logan Smith authored
Only enable -Wsuggest-override if it doesn't suggest adding override to functions that are already final A previous patch added -Wsuggest-override using a simple add_flag_if_supported(). This causes lots of warnings in LLVM when building with older GCC versions (< 9.2) which suggest adding override to functions that are only marked final. The current flags in both GCC >=9.2 and Clang accept plain final as equivalent to override final. This patch adds logic to detect versions of -Wsuggest-override that warn on void foo() final and disables them to avoid warning spam in builds using older GCC's. This has the added minor benefit of getting rid of the useless C_SUPPORTS_SUGGEST_OVERRIDE_FLAG CMake cache variable which was set by add_flag_if_supported(). Differential Revision: https://reviews.llvm.org/D84292
-
LLVM GN Syncbot authored
-
LLVM GN Syncbot authored
-
Jonas Devlieghere authored
- Remove the spurious argument to `CommandObjectScript`. - Use make_shared instead of bare `new`. - Move code duplication behind a macro. Differential revision: https://reviews.llvm.org/D84336
-
Fangrui Song authored
-
Gui Andrade authored
These calls are neither intercepted by compiler-rt nor is libatomic.a naturally instrumented. This patch uses the existing libcall mechanism to detect a call to atomic_load or atomic_store, and instruments them much like the preexisting instrumentation for atomics. Calls to _load are modified to have at least Acquire ordering, and calls to _store at least Release ordering. Because this needs to be converted at runtime, msan injects a LUT (implemented as a vector with extractelement). Differential Revision: https://reviews.llvm.org/D83337
-
Mircea Trofin authored
This reverts commit 44a6bda1. I forgot to correctly attibute it to tarinduj. Fixing and resubmitting.
-
Fangrui Song authored
-
David Green authored
Given a vecreduce.add(select(p, x, 0)), we can convert that to a predicated vaddv, as the else value for the select is the identity value, a zero. That is what this patch does for the vaddv, vaddva, vaddlv and vaddlva instructions, copying the existing patterns to also handle predication through a select. Differential Revision: https://reviews.llvm.org/D84101
-
Cullen Rhodes authored
Summary: This patch implements semantics for the 'arm_sve_vector_bits' type attribute, defined by the Arm C Language Extensions (ACLE) for SVE [1]. The purpose of this attribute is to define fixed-length (VLST) versions of existing sizeless types (VLAT). Implemented in this patch is the the behaviour described in section 3.7.3.2 and minimal parts of sections 3.7.3.3 and 3.7.3.4, this includes: * Defining VLST globals, structs, unions, and local variables * Implicit casting between VLAT <=> VLST. * Diagnosis of ill-formed conditional expressions of the form: C ? E1 : E2 where E1 is a VLAT type and E2 is a VLST, or vice-versa. This avoids any ambiguity about the nature of the result type (i.e is it sized or sizeless). * For vectors: * sizeof(VLST) == N/8 * alignof(VLST) == 16 * For predicates: * sizeof(VLST) == N/64 * alignof(VLST) == 2 VLSTs have the same representation as VLATs in the AST but are wrapped with a TypeAttribute. Scalable types are currently emitted in the IR for uses such as globals and structs which don't support these types, this is addressed in the next patch with codegen, where VLSTs are lowered to sized arrays for globals, structs / unions and arrays. Not implemented in this patch is the behaviour guarded by the feature macros: * __ARM_FEATURE_SVE_VECTOR_OPERATORS * __ARM_FEATURE_SVE_PREDICATE_OPERATORS As such, the GNU __attribute__((vector_size)) extension is not available and operators such as binary '+' are not supported for VLSTs. Support for this is intended to be addressed by later patches. [1] https://developer.arm.com/documentation/100987/latest This is patch 2/4 of a patch series. Reviewers: sdesmalen, rsandifo-arm, efriedma, cameron.mcinally, ctetreau, rengolin, aaron.ballman Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D83551 -
Fangrui Song authored
Noticed by Zhiwei Chen
-
Mircea Trofin authored
Rename the pass to be able to extend it to function properties other than inliner features. Reviewed By: mtrofin Differential Revision: https://reviews.llvm.org/D82044
-
- Jul 22, 2020
-
-
Adrian Prantl authored
This patch has no effect for C and C++. In more dynamic languages, such as Objective-C and Swift GetByteSize() needs to call into the language runtime, so it's important to pass one in where possible. My primary motivation for this is some work I'm doing on the Swift branch, however, it looks like we are also seeing warnings in Objective-C that this may resolve. Everything in the SymbolFile hierarchy still passes in nullptrs, because we don't have an execution context in SymbolFile, since SymbolFile transcends processes. Differential Revision: https://reviews.llvm.org/D84267
-
Arthur Eubanks authored
Explain why you can only get a cached analysis result, not compute one on the fly. Reviewed By: asbirlea Differential Revision: https://reviews.llvm.org/D84259
-
Simon Pilgrim authored
This is defined in ProfileSummary.h which we have to explicitly include already.
-
Anton Afanasyev authored
-
Joel E. Denny authored
This reverts commit 45b8f7ec. It attempts to use debug macros `DPxMOD` and `DPxPTR` in release builds. Will fix and reapply later.
-
Hans Wennborg authored
This casued assertions during Chromium builds. See comment on the code review > Bug filled here: https://bugs.llvm.org/show_bug.cgi?id=45757. > Add comment to skipped regions so we don't track execution count for lines containing only comments. > > Differential Revision: https://reviews.llvm.org/D84208 This reverts commit abd45154 and the follow-up 87d72547.
-
Sebastian Neubauer authored
A clang arm test was failing if clang is compiled without arm support. Regression was introduced in 2a6c8715
-
SharmaRithik authored
Summary: This patch adds more test case focusing on data dependency. Authored By: RithikSharma Reviewer: Whitney, bmahjour, etiotto Reviewed By: Whitney Subscribers: llvm-commits Tag: LLVM Differential Revision: https://reviews.llvm.org/D83543
-
Benson Li authored
Summary: Add printing of the output of stdout during compile errors, in addition to stderr output. Reviewed By: labath Differential Revision: https://reviews.llvm.org/D83425
-
Georgii Rymar authored
It was requested in D84173 thread to not do it, because otherwise we extract and check the name of the symbol table in LLVM style, but do not use it and might report a warning which perhaps might be confusing. Differential revision: https://reviews.llvm.org/D84231
-
Florian Hahn authored
The declarations inside the llvm namespace where indented too much. Fix it by re-running clang-format on the whole file.
-
Dmitry Preobrazhensky authored
16-bit literals are encoded as 32-bit values. If high 16-bits of the value is 0xFFFF, the decoded instruction cannot be reassembled. For example, the following code 0xff,0x04,0x04,0x52,0xcd,0xab,0xff,0xff was decoded as v_mul_lo_u16_e32 v2, 0xffffabcd, v2 However this literal is actually a 64-bit constant 0x00000000ffffabcd which violates requirements described in the documentation - the truncation is not safe. This change corrects decoding to make reassembly possible. Reviewers: arsenm, rampitec Differential Revision: https://reviews.llvm.org/D84098
-
David Carlier authored
- there are additional fields for glob_t struct, thus size check is failing. - to access old mman.h api based on caddr_t, _XOPEN_SOURCE needs to be not defined thus we provide the prototype. - prxmap_t constified. Reviewers: ro, eugenis Reviewed-By: ro Differential Revision: https://reviews.llvm.org/D84046
-
Joel E. Denny authored
This implements OpenMP runtime support for the OpenMP TR8 `present` map type modifier. The previous patch in this series implements Clang front end support. See that patch summary for behaviors that are not yet supported. Reviewed By: grokos, jdoerfert Differential Revision: https://reviews.llvm.org/D83062
-
Joel E. Denny authored
This patch implements Clang front end support for the OpenMP TR8 `present` map type modifier. The next patch in this series implements OpenMP runtime support. This patch does not attempt to implement TR8 sec. 2.22.7.1 "map Clause", p. 319, L14-16: > If a map clause with a present map-type-modifier is present in a map > clause, then the effect of the clause is ordered before all other > map clauses that do not have the present modifier. Compare to L10-11, which Clang does not appear to implement yet: > For a given construct, the effect of a map clause with the to, from, > or tofrom map-type is ordered before the effect of a map clause with > the alloc, release, or delete map-type. This patch also does not implement the `present` implicit-behavior for `defaultmap` or the `present` motion-modifier for `target update`. Reviewed By: ABataev Differential Revision: https://reviews.llvm.org/D83061
-
Stefan Pintilie authored
A linker optimization is available on PowerPC for GOT indirect PCRelative loads. The idea is that we can mark a usual GOT indirect load: pld 3, vec@got@pcrel(0), 1 lwa 3, 4(3) With a relocation to say that if we don't need to go through the GOT we can let the linker further optimize this and replace a load with a nop. pld 3, vec@got@pcrel(0), 1 .Lpcrel1: .reloc .Lpcrel1-8,R_PPC64_PCREL_OPT,.-(.Lpcrel1-8) lwa 3, 4(3) This patch adds the logic that allows the compiler to add the R_PPC64_PCREL_OPT. Reviewers: nemanjai, lei, hfinkel, sfertile, efriedma, tstellar, grosbach Reviewed By: nemanjai Differential Revision: https://reviews.llvm.org/D79864
-
jasonliu authored
Summary: AIX assembly's .set directive is not usable for aliasing purpose. We need to use extra-label-at-defintion strategy to generate symbol aliasing on AIX. Reviewed By: DiggerLin, Xiangling_L Differential Revision: https://reviews.llvm.org/D83252
-
Sebastian Neubauer authored
For a long time, the InstCombine pass handled target specific intrinsics. Having target specific code in general passes was noted as an area for improvement for a long time. D81728 moves most target specific code out of the InstCombine pass. Applying the target specific combinations in an extra pass would probably result in inferior optimizations compared to the current fixed-point iteration, therefore the InstCombine pass resorts to newly introduced functions in the TargetTransformInfo when it encounters unknown intrinsics. The patch should not have any effect on generated code (under the assumption that code never uses intrinsics from a foreign target). This introduces three new functions: TargetTransformInfo::instCombineIntrinsic TargetTransformInfo::simplifyDemandedUseBitsIntrinsic TargetTransformInfo::simplifyDemandedVectorEltsIntrinsic A few target specific parts are left in the InstCombine folder, where it makes sense to share code. The largest left-over part in InstCombineCalls.cpp is the code shared between arm and aarch64. This allows to move about 3000 lines out from InstCombine to the targets. Differential Revision: https://reviews.llvm.org/D81728
-
Simon Pilgrim authored
We don't need the StringsAndChecksumsRef forward declaration as we have to include StringsAndChecksums.h. We don't need DebugSubsectionRecord.h and we forward declare all referenced classes. We don't need to include cstdint as we don't use any stdint types.
-
Simon Pilgrim authored
SelectionDAGBuilder.cpp - remove duplicate includes that already exist in SelectionDAGBuilder.h. NFC.
-
Simon Pilgrim authored
This is defined in MSFCommon.h which we have to explicitly include already.
-
Alexey Bataev authored
-
Roman Lebedev authored
-
Roman Lebedev authored
-
David Green authored
This is very similar to 243970d03cace2, but handling a slightly different form of predicated operations. When starting with a pattern of the form select(p, BinOp(x, y), x), Instcombine will often transform this to BinOp(x, select(p, y, 0)), where 0 is the identity value of the binop (0 for adds/subs, 1 for muls, -1 for ands etc). This adds the patterns that transforms those back into predicated binary operations. There is also a very minor adjustment to tablegen null_frag in here, to allow it to also be recognized as a PatLeaf node, so that it can be used in MVE_TwoOpPattern to easily exclude the cases where we do not need the alternate transform. Differential Revision: https://reviews.llvm.org/D84091
-