Commit Graph

437322 Commits

Author SHA1 Message Date
Nikita Popov
412141663c Reapply [FunctionAttrs] Infer precise FMRB
The previous version of the patch would incorrect convert an
existing argmemonly attribute into an inaccessiblemem_or_argmemonly
attribute.

-----

This updates checkFunctionMemoryAccess() to infer a precise
FunctionModRefBehavior, rather than an approximation split into
read/write and argmemonly.

Afterwards, we still map this back to imprecise function attributes.
This still allows us to infer some cases that we previously did not
handle, namely inaccessiblememonly and inaccessiblemem_or_argmemonly.
In practice, this means we get better memory attributes in the
presence of intrinsics like @llvm.assume.

Differential Revision: https://reviews.llvm.org/D134527
2022-09-29 14:02:15 +02:00
Nikita Popov
e7f1331910 [FunctionAttrs] Add test for argmemonly function that already has attr (NFC)
Test for the issue reported in https://reviews.llvm.org/D134527#3821010.
2022-09-29 13:56:31 +02:00
Timm Bäder
f444a7cc16 Revert "[clang][Interp] Handle enums"
This reverts commit c090295916.

One of the test cases fails. Revert this until I know a way to make it
work reliably.
2022-09-29 13:45:52 +02:00
Muhammad Omair Javaid
4dcf7b5c89 [LLVM][DebugInfo] Disable split-complex.ll for aarch64-pc-windows-msvc
This patch disables split-complex.ll for aarch64-pc-windows-msvc.
split-complex.ll fails with a crash when run on AArch64/Windows.
I have reported following issue: llvm-project/issues/58053
2022-09-29 16:35:04 +05:00
David Green
e6171e87e1 [Clang][Arm] Fix fp16 return error tests under AArch64/Arm. NFC
The -fallow-half-arguments-and-returns option was removed in
59528e4bdb27ed4ab3, replaced with an always-on target option under
AArch64/Arm. There are two tests - fp16-sema.c and renderscripts.rs that
test that an error is produced for __fp16 function args/returns, which
are now expected to pass for Arm/AArch64. i.e they no longer give the
same error as before on native Arm/AArch64 machines. Alter the targets
of those tests to compensate.
2022-09-29 12:16:13 +01:00
Denys Shabalin
ac2e2d6598 [mlir] Add Python bindings for StridedLayoutAttr
Reviewed By: ftynse

Differential Revision: https://reviews.llvm.org/D134869
2022-09-29 11:03:30 +00:00
Adrian Kuegel
dbf1fe5024 [mlir][Linalg] Slightly adjust DestinationStyleOpInterface.
Rename some interface methods to be consistent with the new accessor names.
This is a preparation for adding a ReduceOp, which then will implement
getIteratorTypes() and getOutputs() instead of iterator_types() and outputs().

Differential Revision: https://reviews.llvm.org/D134868
2022-09-29 13:01:50 +02:00
Timm Bäder
971c1b9647 [clang][Interp][NFC] Remove unused prototypes 2022-09-29 12:50:58 +02:00
Timm Bäder
b721558a91 [clang][Interp][NFC] Make EvalEmitter::isActive() const 2022-09-29 12:50:57 +02:00
Timm Bäder
62bf6acae6 [clang][Interp][NFC] Unifty ReadArg() impl in Disasm.cpp
We can use another if constexpr here to make this shorter and easier to
understand.
2022-09-29 12:50:57 +02:00
Timm Bäder
f55c4b4ee3 [clang][Interp] Print Function address in dump()
It's used in the bytecode dump of the function itself, so useful to
identify which function is being called.
2022-09-29 12:50:57 +02:00
Timm Bäder
9837a3bd4b [clang][Interp][NFC] Remove unused opcode argument types 2022-09-29 12:50:57 +02:00
Timm Bäder
7c65d57af0 [clang][Interp][NFC] Unify the two ReadArg() implementations
Just use a constexpr if here instead of two different implementations.
[#
2022-09-29 12:50:57 +02:00
Timm Bäder
e8ad1339d4 [clang][Interp][NFC] Remove unused function 2022-09-29 12:50:57 +02:00
Timm Bäder
f927b71376 [clang][Interp] Specify Boolean conversion operartors as (u)int32
Follow up to https://reviews.llvm.org/D133934
2022-09-29 12:50:57 +02:00
Timm Bäder
84f1df8aac [clang][Interp] Properly destruct allocated Records
We are otherwise leaking some memory the records might allocate
themselves.

Differential Revision: https://reviews.llvm.org/D134054
2022-09-29 12:50:56 +02:00
Timm Bäder
d5360b932e [clang][Interp][NFC] Make classes final that can be final 2022-09-29 12:50:56 +02:00
Timm Bäder
8f5b061254 [clang][Interp][NFC] Make some Record methods const 2022-09-29 12:50:56 +02:00
Timm Bäder
eadd505b0c [clang][Interp][NFC] Limit includes to neccessary ones 2022-09-29 12:50:56 +02:00
Timm Bäder
202ff42f89 [clang][Interp] Rename a local variable to be more specific
It's called BaseSize in the Record class as well, so call it BaseSize
when creating the Record.
2022-09-29 12:50:56 +02:00
Timm Bäder
c090295916 [clang][Interp] Handle enums
Handle DeclRefExprs of enum types. They are otherwise handled like
integers.

Differential Revision: https://reviews.llvm.org/D134020
2022-09-29 12:50:56 +02:00
Timm Bäder
df1cc801da [clang][Interp] Record item types in InterpStack
The type information is lost when pushing things on the stack. When
later pop()ing items of the wrong type, we can instead simply get
garbage values and those problems are hard to find. Add another stack to
record the type of item we pushed and use that for debugging.

Differential Revision: https://reviews.llvm.org/D133941
2022-09-29 12:50:55 +02:00
Timm Bäder
7c4cad4330 [clang][Interp][NFC] Make a few InterpStack functions const 2022-09-29 12:50:55 +02:00
Timm Bäder
ee2e414d66 [clang][Interp] Handle sizeof()
Implement visiting UnaryExprOrTypeTraitExprs to handle sizeof()
expressions.

Differential Revision: https://reviews.llvm.org/D133934
2022-09-29 12:50:55 +02:00
Timm Bäder
1c35f3b93a [clang][Interp][NFC] Unify emit() implementations
Instead of two overloads, use a if constexpr to differentiate between
pointer and non-pointer parameters
2022-09-29 12:50:55 +02:00
Timm Bäder
1d31549e93 [clang][Interp][NFC] Forward-declare Pointer in InterpFrame.h
We don't need the full include here.
2022-09-29 12:50:55 +02:00
Timm Bäder
18a5fc52b2 [clang][Interp][NFC] Remove an unnecessary <vector> include. 2022-09-29 12:50:55 +02:00
Timm Bäder
da62ed6ceb [clang][Interp] Pass initializer when creating globals
This is dead code right now but will be used for implementing array
fillers, where we need some information from the initializer when
allocaing the Descriptors.

Differential Revision: https://reviews.llvm.org/D133856
2022-09-29 12:50:54 +02:00
Amir Ayupov
90d87dbf4b [BOLT] Report BB reordering %-age vs profiled and total number of functions
Reviewed By: spupyrev

Differential Revision: https://reviews.llvm.org/D134819
2022-09-29 12:35:45 +02:00
Thomas Symalla
a41dde2c62 [AMDGPU] Add use check in v_fma combine.
In D132837, an existing v_fma combine was extended to regard nested
fma instructions. Originally, the inner FMA was checked for being used
only once. In its current state, this check is missing, which causes
some regressions.

In this patch, this check was added.

Reviewed By: foad

Differential Revision: https://reviews.llvm.org/D134856
2022-09-29 12:25:03 +02:00
Florian Hahn
080a1e2bbb [LV] Create createInductionResumeValue helper (NFC).
Factor out the logic to create induction resume values for a specific
induction. This will be used in D92132 to support widened IVs during
epilogue vectorization.

Reviewed By: Ayal

Differential Revision: https://reviews.llvm.org/D134211
2022-09-29 11:13:01 +01:00
David Green
123064dc39 [Clang][Arm] Convert -fallow-half-arguments-and-returns to a target option. NFC
This cc1 option -fallow-half-arguments-and-returns allows __fp16 to be
passed by argument and returned, without giving an error. It is
currently always enabled for Arm and AArch64, by forcing the option in
the driver. This means any cc1 tests (especially those needing
arm_neon.h) need to specify the option too, to prevent the error from
being emitted.

This changes it to a target option instead, set to true for Arm and
AArch64. This allows the option to be removed. Previously it was implied
by -fnative_half_arguments_and_returns, which is set for certain
languages like open_cl, renderscript and hlsl, so that option now too
controls the errors. There were are few other non-arm uses of
-fallow-half-arguments-and-returns but I believe they were unnecessary.
The strictfp_builtins.c tests were converted from __fp16 to _Float16 to
avoid the issues.

Differential Revision: https://reviews.llvm.org/D133885
2022-09-29 11:00:32 +01:00
Denys Shabalin
0aced4e02b [mlir] Add C bindings for StridedArrayAttr
Reviewed By: ftynse

Differential Revision: https://reviews.llvm.org/D134808
2022-09-29 11:52:57 +02:00
Muhammad Omair Javaid
f1c74f80c8 [LLVM][MC] Disable cfi-version test for aarch64-pc-windows*
This patch disables MC/ELF/cfi-version.ll test as windows does not emit
.debug_frame needed by the test. This was previously disabled for arm64
but windows on arm uses aarch64-pc-windows* triple. Replacing arm64 with
aarch64 to accomodate windows aarch64 triple(s).

Reviewed By: DavidSpickett

Differential Revision: https://reviews.llvm.org/D134863
2022-09-29 14:38:00 +05:00
Nicolas Vasilache
07801f713e [mlir][memref]Add conversion support for memref.extract_aligned_pointer_as_index to LLVM
Reviewed By: pifon2a

Differential Revision: https://reviews.llvm.org/D134834
2022-09-29 02:35:00 -07:00
Stefan Gränitz
4a617c426d [WinEH] Prepare test win64-funclet-preisel-intrinsics.ll for extension to nested try-catch case (NFC) 2022-09-29 11:30:27 +02:00
Nicolas Vasilache
df6387079e [mlir][memref]Add pattern to forward memref.extract_aligned_pointer_as_index(view_like_op) to its source
Differential Revision: https://reviews.llvm.org/D134835
2022-09-29 02:27:01 -07:00
Juan Manuel MARTINEZ CAAMAÑO
52545e603b [DebugInfo][InferAddressSpaces] Propagate DebugLoc when cloning an instruction in InferAddressSpaces
Differential Revision: https://reviews.llvm.org/D134428
2022-09-29 08:43:37 +00:00
Juan Manuel MARTINEZ CAAMAÑO
e9716c64ec [StructurizeCFG] Remove imposible case and replace by assert
In addition, replace outdated XFAIL test by a new one.

Differential Revision: https://reviews.llvm.org/D134439
2022-09-29 08:27:49 +00:00
Florian Hahn
9247b012d6 [SCEVExpander] Use CreateBitOrPointerCast instead of builder (NFC).
Simplify the code by using CastInst::CreateBitOrPointerCast directly. By
not going through the builder, the temporary instruction also won't get
registered in InsertedValues & co, which means less work overall and
simplifies the clean-up.
2022-09-29 09:24:39 +01:00
Michael Platings
dba8fced96 Fix frint ACLE intrinsic names
Although the instruction names begin "frint", the ACLE spec states that
the intrinsic names begin "__rint", without the "f".

Differential Revision: https://reviews.llvm.org/D134824
2022-09-29 09:13:07 +01:00
Nikita Popov
9525e8ad3a Revert "[cmake] Export GetHostTriple.cmake"
This turned out to be insufficient by itself, because we would
also need to export config.guess.

This reverts commit 4ac4d6bc9f.
2022-09-29 09:58:39 +02:00
Fangrui Song
04a65d62a0 Revert D134638 "[Clang][LoongArch] Add inline asm support for constraints k/m/ZB/ZC"
This reverts commit b7baddc755.

Broke CodeGen/X86/callbr-asm-kill.mir
We shall pay attention when adding new constraints.
2022-09-29 00:54:56 -07:00
Thomas Symalla
a41764810f [NFC][AMDGPU] Pre-commit FMA test. 2022-09-29 09:54:06 +02:00
Fangrui Song
e3ecc6a912 [ELF] Make symAux[0] a sentinel
And default auxIdx to 0.
2022-09-29 00:50:19 -07:00
Fangrui Song
08af5ba371 [Driver] Add --config= as canonical spelling of --config
Driver options usually use `Joined` instead of `Separate`. It is also weird that
`--config-system-dir=`/etc exist while `--config=` did not exist.

Reviewed By: mgorny

Differential Revision: https://reviews.llvm.org/D134790
2022-09-29 00:38:12 -07:00
Sam McCall
4c862da8d4 [clangd] Avoid using constructor/destructor of vector<incomplete type>
This is formally invalid, and causes build errors when building with
clang in -std=c++20.

http://eel.is/c%2B%2Bdraft/vector.overview#4
2022-09-29 09:30:03 +02:00
Pierre van Houtryve
682c7c77f5 [AMDGPU] Update mad-mix* CodeGen tests
- Use `fneg %a` instead of `fsub -0.0, %a`
  - This is for D134354 as we don't currently support folding `fsub -0.0, %a` into `fneg` on GISel.
    Also, `fneg` is the canonical way to do the negation.
- Switch to `update_llc_test_checks`-generated tests.
  - Better test coverage
  - Easier to update
  - Easier to see changes in future diffs
- Remove unnecessary CL arguments in RUN lines

Motive for the patch: Preparation for D134354 - we would like to
put GISel tests in this file as well. Fixing the lack of `fneg` and
switching to generated testing makes it much easier.

Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D134793
2022-09-29 07:11:34 +00:00
Weining Lu
b7baddc755 [Clang][LoongArch] Add inline asm support for constraints k/m/ZB/ZC
k: A memory operand whose address is formed by a base register and
(optionally scaled) index register.

m: A memory operand whose address is formed by a base register and
offset that is suitable for use in instructions with the same
addressing mode as st.w and ld.w.

ZB: An address that is held in a general-purpose register. The offset
is zero.

ZC: A memory operand whose address is formed by a base register and
offset that is suitable for use in instructions with the same
addressing mode as ll.w and sc.w.

Differential Revision: https://reviews.llvm.org/D134638
2022-09-29 15:02:08 +08:00
Vitaly Buka
346de23ec9 Revert "[sanitizer] Use LLVM_ENABLE_LIBCXX to build symbolizer"
Trigger some "libatomic" error.

This reverts commit ccbb401472.
2022-09-28 23:55:21 -07:00