platform/upstream/llvm.git
2 years ago[RISCV] Share tablegen classes for F, D, and Zfh. Other simplifications. NFC
Craig Topper [Fri, 10 Dec 2021 17:27:13 +0000 (09:27 -0800)]
[RISCV] Share tablegen classes for F, D, and Zfh. Other simplifications. NFC

By adding the register class and funct as template parameters we
can share the classes with all 3 extensions.

I've used "let SchedRW =" to avoid repeating scheduler classes on
multiple lines where we previously inherited from the Sched class.

A subsequent patch will add mayRaiseFPException and FRM dependencies.
Reducing the number of classes means less repeating for those changes.

This of course conflicts with the Zfinx patch D93298.

Reviewed By: achieveartificialintelligence

Differential Revision: https://reviews.llvm.org/D115469

2 years ago[DwarfDebug] Refuse to emit DW_OP_LLVM_arg values wider than 64 bits
Adrian Prantl [Fri, 10 Dec 2021 17:15:54 +0000 (09:15 -0800)]
[DwarfDebug] Refuse to emit DW_OP_LLVM_arg values wider than 64 bits

DwarfExpression::addUnsignedConstant(const APInt &Value) only supports
wider-than-64-bit values when it is used to emit a top-level DWARF
expression representing the location of a variable. Before this change,
it was possible to call addUnsignedConstant on >64 bit values within a
subexpression when substituting DW_OP_LLVM_arg values.

This can trigger an assertion failure (e.g. PR52584, PR52333) when it
happens in a fragment (DW_OP_LLVM_fragment) expression, as
addUnsignedConstant on >64 bit values splits the constant into separate
DW_OP_pieces, which modifies DwarfExpression::OffsetInBits.

This change papers over the assertion errors by bailing on overly wide
DW_OP_LLVM_arg values. A more comprehensive fix might be to be to split
wide values into pointer-sized fragments.

[0] https://github.com/llvm/llvm-project/blob/e71fa03/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp#L799-L805

Patch by Ricky Zhou!

Differential Revision: https://reviews.llvm.org/D115343

2 years ago[RISCV] Remove FCSR from RISCVRegisterInfo.
Craig Topper [Fri, 10 Dec 2021 17:20:40 +0000 (09:20 -0800)]
[RISCV] Remove FCSR from RISCVRegisterInfo.

We only used this to mark it as a reserved register. But that's not
important if we don't do anything else with it.

I think if we were ever to do anything with it, we would need to
model it as a super register of FRM and FFLAGS. But it might be
easier to reference both FRM and FFLAGS in implicit defs/uses
for anything we were to do with "fcsr".

Reviewed By: sepavloff

Differential Revision: https://reviews.llvm.org/D115455

2 years ago[RISCV][Clang] Compute the default target-abi if it's empty.
Zakk Chen [Thu, 4 Nov 2021 17:13:50 +0000 (10:13 -0700)]
[RISCV][Clang] Compute the default target-abi if it's empty.

Every generated IR has a corresponding target-abi value, so
encoding a non-empty value would improve the robustness and
correctness.

Reviewed By: asb, jrtc27, arichardson

Differential Revision: https://reviews.llvm.org/D105555

2 years ago[Support] Use range-based for loops (NFC)
Kazu Hirata [Fri, 10 Dec 2021 16:53:14 +0000 (08:53 -0800)]
[Support] Use range-based for loops (NFC)

2 years ago[analyzer] Implemented RangeSet::Factory::unite function to handle intersections...
Denys Petrov [Thu, 18 Nov 2021 14:06:06 +0000 (16:06 +0200)]
[analyzer] Implemented RangeSet::Factory::unite function to handle intersections and adjacency

Summary: Handle intersected and adjacent ranges uniting them into a single one.
Example:
intersection [0, 10] U [5, 20] = [0, 20]
adjacency [0, 10] U [11, 20] = [0, 20]

Differential Revision: https://reviews.llvm.org/D99797

2 years ago[AArch64] Fix a warning
Kazu Hirata [Fri, 10 Dec 2021 16:33:07 +0000 (08:33 -0800)]
[AArch64] Fix a warning

This patch fixes:

  llvm/lib/Target/AArch64/GISel/AArch64PostLegalizerCombiner.cpp:315:7:
  error: unused variable 'ValTy' [-Werror,-Wunused-variable]

2 years ago[IR] Extract method to get single GEP index from offset (NFC)
Nikita Popov [Fri, 10 Dec 2021 11:32:05 +0000 (12:32 +0100)]
[IR] Extract method to get single GEP index from offset (NFC)

This exposes the core logic of getGEPIndicesForOffset() as a
getGEPIndexForOffset() method that only returns a single offset,
instead of following the whole chain.

2 years agoRevert "[clang][dataflow] Add framework for testing analyses."
Nico Weber [Fri, 10 Dec 2021 16:05:59 +0000 (11:05 -0500)]
Revert "[clang][dataflow] Add framework for testing analyses."

Doesn't build on Windows.

This reverts commit 5a40df6381819b38df66e4b6eaa02e7140e07a0c
and commit db494bd4e815bc5546ee0986cb738da1a54bf6ab.

2 years ago[MCA][X86] Add missing ALIGND/ALIGNQ from AVX512F/AVX512VL tests
Simon Pilgrim [Fri, 10 Dec 2021 15:59:36 +0000 (15:59 +0000)]
[MCA][X86] Add missing ALIGND/ALIGNQ from AVX512F/AVX512VL tests

2 years ago[MCA][X86] Add missing PALIGNR from AVX512BW/AVX512BWVL tests
Simon Pilgrim [Fri, 10 Dec 2021 15:33:20 +0000 (15:33 +0000)]
[MCA][X86] Add missing PALIGNR from AVX512BW/AVX512BWVL tests

2 years ago[MCA][X86] Add missing PSLLDQ/PSRLDQ from AVX512BW/AVX512BWVL tests
Simon Pilgrim [Fri, 10 Dec 2021 15:27:52 +0000 (15:27 +0000)]
[MCA][X86] Add missing PSLLDQ/PSRLDQ from AVX512BW/AVX512BWVL tests

2 years ago[MCA][X86] Add missing PACKSS/PACKUS from AVX512BW/AVX512BWVL tests
Simon Pilgrim [Fri, 10 Dec 2021 15:18:30 +0000 (15:18 +0000)]
[MCA][X86] Add missing PACKSS/PACKUS from AVX512BW/AVX512BWVL tests

2 years agoVerify inferattrs doesn't infer unexpected attributes
Paul Robinson [Fri, 10 Dec 2021 15:54:17 +0000 (07:54 -0800)]
Verify inferattrs doesn't infer unexpected attributes

Add --match-full-lines or `{{$}}` to ensure that no unexpected
attributes appear at the ends of lines.  Account for the cases
where attributes were in fact appearing.

Differential Revision: https://reviews.llvm.org/D110720

2 years ago[LV][ARM] Improve reduction costmodel for mismatching extension types.
David Green [Fri, 10 Dec 2021 15:40:58 +0000 (15:40 +0000)]
[LV][ARM] Improve reduction costmodel for mismatching extension types.

Given a MLA reduction from two different types (say i8 and i16), we were
previously failing to find the reduction pattern, often making us chose
the lower vector factor. This improves that by using the largest of the
two extension types, allowing us to use the larger VF as the type of the
reduction.

As per https://godbolt.org/z/KP549EEYM the backend handles this
valiantly, leading to better performance.

Differential Revision: https://reviews.llvm.org/D115432

2 years ago[ConstantFold] Handle same type in ConstantFoldLoadThroughBitcast
Nikita Popov [Fri, 10 Dec 2021 15:37:49 +0000 (16:37 +0100)]
[ConstantFold] Handle same type in ConstantFoldLoadThroughBitcast

Usually the case where the types are the same ends up being handled
fine because it's legal to do a trivial bitcast to the same type.
However, this is not true for aggregate types. Short-circuit the
whole code if the types match exactly to account for this.

2 years ago[gn build] (semimanually) port ebc31d2e7297
Nico Weber [Fri, 10 Dec 2021 15:39:28 +0000 (10:39 -0500)]
[gn build] (semimanually) port ebc31d2e7297

2 years ago[gn build] Port 5a40df638181
Nico Weber [Fri, 10 Dec 2021 15:34:07 +0000 (10:34 -0500)]
[gn build] Port 5a40df638181

2 years ago[ASan] Shared optimized callbacks implementation.
Kirill Stoimenov [Fri, 10 Dec 2021 15:08:26 +0000 (15:08 +0000)]
[ASan] Shared optimized callbacks implementation.

This change moves optimized callbacks from each .o file to compiler-rt. Instead of using code generation it uses direct assembly implementation. Please note that the 'or' version is not implemented and it will produce unresolved external if somehow 'or' version is requested.

Reviewed By: vitalybuka

Differential Revision: https://reviews.llvm.org/D114558

2 years agoRevert "[Symbolizer][Debuginfo] Add debuginfod client to llvm-symbolizer."
Nico Weber [Fri, 10 Dec 2021 15:26:55 +0000 (10:26 -0500)]
Revert "[Symbolizer][Debuginfo] Add debuginfod client to llvm-symbolizer."

This reverts commit 5bba0fe12b2971a9cbc859f48ee6e6c1356c88b8.
Makes lld depend on libcurl, see comments on https://reviews.llvm.org/D113717

2 years ago[clang][dataflow] Add framework for testing analyses.
Yitzhak Mandelbaum [Tue, 16 Nov 2021 16:57:26 +0000 (16:57 +0000)]
[clang][dataflow] Add framework for testing analyses.

Adds a general-purpose framework to support testing of dataflow analyses.

Differential Revision: https://reviews.llvm.org/D115341

2 years ago[InstSimplify] Add test for load of aggregate (NFC)
Nikita Popov [Fri, 10 Dec 2021 15:11:32 +0000 (16:11 +0100)]
[InstSimplify] Add test for load of aggregate (NFC)

The test is switched to use -instsimplify as it is in the
InstSimplify directory. In this particular case InstCombine does
fold the load (in a very roundabout way), but InstSimplify does not.

2 years ago[GlobalOpt] Add test for PR51879 (NFC)
Nikita Popov [Thu, 9 Dec 2021 15:23:39 +0000 (16:23 +0100)]
[GlobalOpt] Add test for PR51879 (NFC)

2 years ago[AArch64] Use Feature for A53 Erratum 835769 Fix
Archibald Elliott [Fri, 10 Dec 2021 15:09:43 +0000 (15:09 +0000)]
[AArch64] Use Feature for A53 Erratum 835769 Fix

When this pass was originally implemented, the fix pass was enabled
using a llvm command-line flag. This works fine, except in the case of
LTO, where the flag is not passed into the linker plugin in order to
enable the function pass in the LTO backend.

Now LTO exists, the expectation now is to use target features rather
than command-line arguments to control code generation, as this ensures
that different command-line arguments in different files are correctly
represented, and target-features always get to the LTO plugin as they
are encoded into LLVM IR.

The fall-out of this change is that the fix pass has to always be added
to the backend pass pipeline, so now it makes no changes if the function
does not have the right target feature to enable it. This should make a
minimal difference to compile time.

One advantage is it's now much easier to enable when compiling for a
Cortex-A53, as CPUs imply their own individual sets of target-features,
in a more fine-grained way. I haven't done this yet, but it is an
option, if the fix should be enabled in more places.

Existing tests of the user interface are unaffected, the changes are to
reflect that the argument is now turned into a target feature.

Reviewed By: tmatheson

Differential Revision: https://reviews.llvm.org/D114703

2 years agoRevert "[clang][dataflow] Add framework for testing analyses."
Yitzhak Mandelbaum [Fri, 10 Dec 2021 14:27:15 +0000 (14:27 +0000)]
Revert "[clang][dataflow] Add framework for testing analyses."

This reverts commit 47d526d67e3cc66771eed1d0b607226a4fb9a5b5.

The commit is failing to build on some platforms. Rolling back while we investigate.

2 years ago[M68k][NFC] Fixed unused argument warnings in M68kInstrControl.td
Min-Yih Hsu [Fri, 10 Dec 2021 14:02:15 +0000 (22:02 +0800)]
[M68k][NFC] Fixed unused argument warnings in M68kInstrControl.td

Removed those unused template arguments. NFC.

2 years ago[MCA][X86] Add missing PSHUFLW from AVX512BWVL tests
Simon Pilgrim [Fri, 10 Dec 2021 14:02:19 +0000 (14:02 +0000)]
[MCA][X86] Add missing PSHUFLW from AVX512BWVL tests

2 years ago[clang][dataflow] Add framework for testing analyses.
Yitzhak Mandelbaum [Tue, 16 Nov 2021 16:57:26 +0000 (16:57 +0000)]
[clang][dataflow] Add framework for testing analyses.

Adds a general-purpose framework to support testing of dataflow analyses.

Differential Revision: https://reviews.llvm.org/D115341

2 years ago[LV] Remove redundant IV casts using VPlan (NFCI).
Florian Hahn [Fri, 10 Dec 2021 13:56:43 +0000 (13:56 +0000)]
[LV] Remove redundant IV casts using VPlan (NFCI).

This patch simplifies handling of redundant induction casts, by
removing dead cast instructions after initial VPlan construction.
This has the following benefits:

  1. fixes a crash
     (see @test_optimized_cast_induction_feeding_first_order_recurrence)
  2. Simplifies VPWidenIntOrFpInduction to a single-def recipes
  3. Retires recordVectorLoopValueForInductionCast.

Reviewed By: Ayal

Differential Revision: https://reviews.llvm.org/D115112

2 years ago[gn build] Prevent deps on HTTP requests in clang and lld at GN time
Nico Weber [Fri, 10 Dec 2021 13:54:17 +0000 (08:54 -0500)]
[gn build] Prevent deps on HTTP requests in clang and lld at GN time

To make sure no regressions creep in. See also discussion on
https://reviews.llvm.org/D113717

We don't want this dep in most targets, but protecting clang and lld is
a good start.

2 years ago[CodeGen] Improve SelectionDAGBuilder lowering code for get.active.lane.mask intrinsic
David Sherwood [Tue, 7 Dec 2021 14:13:55 +0000 (14:13 +0000)]
[CodeGen] Improve SelectionDAGBuilder lowering code for get.active.lane.mask intrinsic

Previously we were using UADDO to generate a two-result value with
the unsigned addition and the overflow mask. We then combined the
overflow mask with the trip count comparison to get a result.
However, we don't need to do this - we can simply use a UADDSAT
saturating add node to add the vector index splat and the stepvector
together. Then we can just compare this to a splat of the trip count.
This results in overall better code quality for both Thumb2 and AArch64.

Differential Revision: https://reviews.llvm.org/D115354

2 years agoReapply [xray] add support for hexagon
Brian Cain [Thu, 9 Dec 2021 01:57:20 +0000 (17:57 -0800)]
Reapply [xray] add support for hexagon

Adds x-ray support for hexagon to llvm codegen, clang driver,
compiler-rt libs.

Differential Revision: https://reviews.llvm.org/D113638

Reapplying this after 543a9ad7c460bb8d641b1b7c67bbc032c9bfdb45,
which fixes the leak introduced there.

2 years ago[OpenMP] libomp: fix Fortran header: lines exceeded 72-char length
AndreyChurbanov [Fri, 10 Dec 2021 13:23:21 +0000 (16:23 +0300)]
[OpenMP] libomp: fix Fortran header: lines exceeded 72-char length

Added line continuation to two long lines in Fortran header.

Differential Revision: https://reviews.llvm.org/D114537

2 years ago[clang][dataflow] Fix build breakage from commit 8dcaf3aa0bf25508700a7452ed963c1487221dfd
Yitzhak Mandelbaum [Fri, 10 Dec 2021 12:55:48 +0000 (12:55 +0000)]
[clang][dataflow] Fix build breakage from commit 8dcaf3aa0bf25508700a7452ed963c1487221dfd

2 years ago[gn build] (manually) port 8dcaf3aa0bf25 and 6e2aecd759dc
Nico Weber [Fri, 10 Dec 2021 12:49:25 +0000 (07:49 -0500)]
[gn build] (manually) port 8dcaf3aa0bf25 and 6e2aecd759dc

2 years ago[libcxx][test][NFC] Extend testing for vector.cons
Konstantin Boyarinov [Fri, 10 Dec 2021 12:00:10 +0000 (15:00 +0300)]
[libcxx][test][NFC] Extend testing for vector.cons

Extending std::vector tests in vector.cons module:

- std::vector::assign when source range is bigger than destination
  capacity
- construction of empty vector using copy ctor, initializer_list ctor and
  others

Reviewed By: ldionne, rarutyun, #libc

Differential Revision: https://reviews.llvm.org/D114954

2 years ago[clangd] Provide documentation as MarkupContent in signaturehelp
Kadir Cetinkaya [Thu, 9 Dec 2021 08:36:04 +0000 (09:36 +0100)]
[clangd] Provide documentation as MarkupContent in signaturehelp

This unifies the behaviour we have in code completion item
documentations and signaturehelp. Providing better line wrapping and detection
of inline code blocks in comments to be renedered appropriately in markdown.

Differential Revision: https://reviews.llvm.org/D115442

2 years agoAdd PACBTI-M support to LLVM release notes.
Ties Stuij [Fri, 10 Dec 2021 11:52:09 +0000 (11:52 +0000)]
Add PACBTI-M support to LLVM release notes.

Clang release note changes will be added once the last PACBTI-M command line
patch lands.

Reviewed By: vhscampos

Differential Revision: https://reviews.llvm.org/D115507

2 years ago[libcxx][test][NFC] Tests for set comparisons
Konstantin Boyarinov [Fri, 10 Dec 2021 09:51:42 +0000 (12:51 +0300)]
[libcxx][test][NFC] Tests for set comparisons

Add tests for std::set and std::multiset comparisons that were missed by
D111738 and D112424.

Reviewed By: ldionne, rarutyun, #libc

Differential Revision: https://reviews.llvm.org/D115136

2 years ago[Passes] Only run extra vector passes if loops have been vectorized.
Florian Hahn [Fri, 10 Dec 2021 11:42:45 +0000 (11:42 +0000)]
[Passes] Only run extra vector passes if loops have been vectorized.

This patch uses a similar trick as in D113947 to only run the extra
passes after vectorization on functions where loops have been
vectorized.

The reason for running the 'extra vector passes' is
simplification/unswitching of the runtime checks created by LV, there
should be no need to run them if nothing got vectorized

To do that, a new dummy analysis ShouldRunExtraVectorPasses has been
added. If loops have been vectorized for a function, LV will cache the
analysis. At the moment it uses MadeCFGChanges as proxy for loop
vectorized, which isn't perfect (it could be too aggressive, e.g.
because no runtime checks have been added), but should be good enough
for now.

The extra passes are now managed by a new FunctionPassManager that
runs its passes only if ShouldRunExtraVectorPasses has been cached.

Without this patch, `-extra-vectorizer-passes` has the following
compile-time impact:

NewPM-O3: +4.86%
NewPM-ReleaseThinLTO: +3.56%
NewPM-ReleaseLTO-g: +7.17%

http://llvm-compile-time-tracker.com/compare.php?from=ead3979a92fc33add4710c4510d6906260dcb4ad&to=c292da649e2c6e88a31e702fdc474727d09c72bc&stat=instructions

With this patch, that gets reduced to

NewPM-O3: +1.43%
NewPM-ReleaseThinLTO: +1.00%
NewPM-ReleaseLTO-g: +1.58%

http://llvm-compile-time-tracker.com/compare.php?from=ead3979a92fc33add4710c4510d6906260dcb4ad&to=e67d86b57810011cf285eb9aa1944781be6096f0&stat=instructions

It is probably still too high to enable by default, but much better.

Reviewed By: aeubanks

Differential Revision: https://reviews.llvm.org/D115052

2 years ago[LV][NFC] New test case for compile time known trip count (TC)
Evgeniy Brevnov [Wed, 24 Nov 2021 12:41:47 +0000 (19:41 +0700)]
[LV][NFC] New test case for compile time known trip count (TC)

New test to test/track upcoming chnages

Reviewed By: fhahn

Differential Revision: https://reviews.llvm.org/D114526

2 years ago[asan] Add support for disable_sanitizer_instrumentation attribute
Alexander Potapenko [Tue, 23 Nov 2021 09:32:35 +0000 (10:32 +0100)]
[asan] Add support for disable_sanitizer_instrumentation attribute

For ASan this will effectively serve as a synonym for
__attribute__((no_sanitize("address")))

Differential Revision: https://reviews.llvm.org/D114421

2 years ago[mlir] Move `linalg.tensor_expand/collapse_shape` to TensorDialect.
Alexander Belyaev [Fri, 10 Dec 2021 11:03:47 +0000 (12:03 +0100)]
[mlir] Move `linalg.tensor_expand/collapse_shape` to TensorDialect.

RFC: https://llvm.discourse.group/t/rfc-reshape-ops-restructuring/3310

linalg.fill gets a canonicalizer, because `FoldFillWithTensorReshape` cannot be moved to tensorops (it uses linalg::FillOp inside). Before it was listed as a canonicalization pattern for the reshape operations, now it became a canonicalization for FillOp.

Differential Revision: https://reviews.llvm.org/D115502

2 years agoRevert "[llvm] [Debuginfo] Add llvm-debuginfod-find tool and end-to-end-tests."
Noah Shutty [Fri, 10 Dec 2021 11:08:15 +0000 (11:08 +0000)]
Revert "[llvm] [Debuginfo] Add llvm-debuginfod-find tool and end-to-end-tests."

This reverts commit 350fe22f2a7f16791f9269fd50f1fca1e7fa74d1 because it
caused buildbot breakages (https://lab.llvm.org/buildbot/#/builders/91/builds/387).

2 years ago[clang][dataflow] Implement a basic algorithm for dataflow analysis
Stanislav Gatev [Fri, 10 Dec 2021 09:37:07 +0000 (10:37 +0100)]
[clang][dataflow] Implement a basic algorithm for dataflow analysis

This is part of the implementation of the dataflow analysis framework.
See "[RFC] A dataflow analysis framework for Clang AST" on cfe-dev.

Reviewed By: xazax.hun, gribozavr2

Differential Revision: https://reviews.llvm.org/D115235

2 years ago[llvm] [Debuginfo] Add llvm-debuginfod-find tool and end-to-end-tests.
Noah Shutty [Fri, 10 Dec 2021 10:22:15 +0000 (10:22 +0000)]
[llvm] [Debuginfo] Add llvm-debuginfod-find tool and end-to-end-tests.

This implements the `llvm-debuginfod-find` tool, which wraps the Debuginfod library (D112758) to query debuginfod servers for artifacts according to the [[ https://www.mankier.com/8/debuginfod#Webapi | specification ]].

Reviewed By: labath

Differential Revision: https://reviews.llvm.org/D112759

2 years ago[VPlan] Add InductionDescriptor to VPWidenIntOrFpInduction. (NFC)
Florian Hahn [Fri, 10 Dec 2021 09:55:09 +0000 (09:55 +0000)]
[VPlan] Add InductionDescriptor to VPWidenIntOrFpInduction. (NFC)

This allows easier access to the induction descriptor from VPlan,
without needing to go through Legal. VPReductionPHIRecipe already
contains a RecurrenceDescriptor in a similar fashion.

Reviewed By: Ayal

Differential Revision: https://reviews.llvm.org/D115111

2 years ago[ARM][libcxxabi] Add PACBTI-M support to libcxxabi
Ties Stuij [Fri, 10 Dec 2021 09:36:19 +0000 (09:36 +0000)]
[ARM][libcxxabi] Add PACBTI-M support to libcxxabi

This change consists of just adding 'BTI' to the prologue of Arm assembly
functions, which is just the one: __cxa_end_cleanup

This patch is part of a series that adds support for the PACBTI-M extension of
the Armv8.1-M architecture, as detailed here:

https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/armv8-1-m-pointer-authentication-and-branch-target-identification-extension

The PACBTI-M specification can be found in the Armv8-M Architecture Reference
Manual:

https://developer.arm.com/documentation/ddi0553/latest

The following people contributed to this patch:

- Mikhail Maltsev

Reviewed By: lenary, danielkiss

Differential Revision: https://reviews.llvm.org/D112432

2 years ago[msan] Implement -msan-disable-checks.
Alexander Potapenko [Tue, 7 Dec 2021 12:20:12 +0000 (13:20 +0100)]
[msan] Implement -msan-disable-checks.

To ease the deployment of KMSAN, we need a way to apply
__attribute__((no_sanitize("kernel-memory"))) to the whole source file.

Passing -msan-disable-checks=1 to the compiler will make it
treat every function in the file as if it was lacking the
sanitize_memory attribute.

Differential Revision: https://reviews.llvm.org/D115236

2 years ago[gn build] Port 1d0244aed781
LLVM GN Syncbot [Fri, 10 Dec 2021 09:08:48 +0000 (09:08 +0000)]
[gn build] Port 1d0244aed781

2 years agoReapply CycleInfo: Introduce cycles as a generalization of loops
Sameer Sahasrabuddhe [Fri, 10 Dec 2021 09:06:43 +0000 (14:36 +0530)]
Reapply CycleInfo: Introduce cycles as a generalization of loops

Reverts 02940d6d2202. Fixes breakage in the modules build.

LLVM loops cannot represent irreducible structures in the CFG. This
change introduce the concept of cycles as a generalization of loops,
along with a CycleInfo analysis that discovers a nested
hierarchy of such cycles. This is based on Havlak (1997), Nesting of
Reducible and Irreducible Loops.

The cycle analysis is implemented as a generic template and then
instatiated for LLVM IR and Machine IR. The template relies on a new
GenericSSAContext template which must be specialized when used for
each IR.

This review is a restart of an older review request:
https://reviews.llvm.org/D83094

Original implementation by Nicolai Hähnle <nicolai.haehnle@amd.com>,
with recent refactoring by Sameer Sahasrabuddhe <sameer.sahasrabuddhe@amd.com>

Differential Revision: https://reviews.llvm.org/D112696

2 years agoRemove one change from https://reviews.llvm.org/D115431
Jason Molenda [Fri, 10 Dec 2021 09:01:17 +0000 (01:01 -0800)]
Remove one change from https://reviews.llvm.org/D115431

The change to ArchSpec::SetArchitecture that was setting the
ObjectFile of a mach-o binary to llvm::Triple::MachO.  It's not
necessary for my patch, and it changes the output of image list -t
causing TestUniversal.py to fail on x86_64 systems.  The bots
turned up the failure, I was developing and testing this on
an Apple Silicon mac.

2 years ago[flang][nfc] Fix formatting
Andrzej Warzynski [Fri, 10 Dec 2021 08:56:57 +0000 (08:56 +0000)]
[flang][nfc] Fix formatting

2 years ago[flang][codegen] Add a conversion for `!fir.coordinate_of` - part 1
Andrzej Warzynski [Wed, 17 Nov 2021 10:03:19 +0000 (10:03 +0000)]
[flang][codegen] Add a conversion for `!fir.coordinate_of` - part 1

This patch extends the `FIRToLLVMLowering` pass in Flang by adding a
hook to transform `!fir.coordinate_of` into a sequence of LLVM MLIR
instructions.

The following cases are currently supported:
  1.  the input object is a `!fir.complex` (wrapped in e.g. `!fir.ref` or
      `!fir.box`)
  2.  the input object is wrapped in a `!fir.box` (including e.g.
      `!fir.array`).
Note that `!fir.complex` inside a `!fir.box` falls under case 1. above
(i.e. it's a special case regardless of the wrapping type).

This is part of the upstreaming effort from the `!fir-dev` branch in [1].

Differential Revision: https://reviews.llvm.org/D114159

Co-authored-by: Jean Perier <jperier@nvidia.com>
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Co-authored-by: V Donaldson <vdonaldson@nvidia.com>
2 years ago[AMDGPU] Add AV class spill pseudo instructions
Christudasan Devadasan [Thu, 9 Dec 2021 07:55:21 +0000 (02:55 -0500)]
[AMDGPU] Add AV class spill pseudo instructions

While enabling vector superclasses with D109301,
the AV spills are converted into VGPR spills by
introducing appropriate copies. The whole thing
ended up adding two instructions per spill (a copy
+ vgpr spill pseudo) and caused an incorrect
liverange update during inline spiller.

This patch adds the pseudo instructions for all
AV spills from 32b to 1024b and handles them in
the way all other spills are lowered.

Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D115439

2 years ago[PowerPC] Require htm feature for HTM builtins
Qiu Chaofan [Fri, 10 Dec 2021 08:01:45 +0000 (16:01 +0800)]
[PowerPC] Require htm feature for HTM builtins

Reviewed By: jsji

Differential Revision: https://reviews.llvm.org/D114569

2 years ago[Inline] Add test for exponential deferred inlining (NFC)
Nikita Popov [Fri, 10 Dec 2021 07:59:59 +0000 (08:59 +0100)]
[Inline] Add test for exponential deferred inlining (NFC)

This shows a case where deferred inlining produces an exponential
result. The test case demonstrates the basic exponential behavior,
but is nowhere close to the worst case. For example, the file at
https://gist.github.com/nikic/1262b5f7d27278e1b34a190ae10947f5
currently gets expanded from <100 lines to nearly 500000 lines of
IR by opt -inline.

2 years ago[GlobalISel] Fix IRTranslator for constexpr fcmp
Konstantin Schwarz [Thu, 9 Dec 2021 16:18:42 +0000 (17:18 +0100)]
[GlobalISel] Fix IRTranslator for constexpr fcmp

The existing code assumed fcmp to always be an Instruction, but it can also be a ConstExpr.

Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D115450

2 years ago[NFC] Format the newly added table for coro.end in coroutines.rst
Chuanqi Xu [Fri, 10 Dec 2021 07:18:53 +0000 (15:18 +0800)]
[NFC] Format the newly added table for coro.end in coroutines.rst

The intention should be formatted in two lines instead of one.

2 years agoSet a default number of address bits on Darwin arm64 systems
Jason Molenda [Fri, 10 Dec 2021 06:43:39 +0000 (22:43 -0800)]
Set a default number of address bits on Darwin arm64 systems

With arm64e ARMv8.3 pointer authentication, lldb needs to know how
many bits are used for addressing and how many are used for pointer
auth signing.  This should be determined dynamically from the inferior
system / corefile, but there are some workflows where it still isn't
recorded and we fall back on a default value that is correct on some
Darwin environments.

This patch also explicitly sets the vendor of mach-o binaries to
Apple, so we select an Apple ABI instead of a random other ABI.

It adds a function pointer formatter for systems where pointer
authentication is in use, and we can strip the ptrauth bits off
of the function pointer address and get a different value that
points to an actual symbol.

Differential Revision: https://reviews.llvm.org/D115431
rdar://84644661

2 years ago[libc][NFC] Add NOLINT annotations at call sites to immintrin functions.
Siva Chandra Reddy [Fri, 10 Dec 2021 06:36:50 +0000 (06:36 +0000)]
[libc][NFC] Add NOLINT annotations at call sites to immintrin functions.

These annotations are intended to be temporary while we understand why
clang-tidy is not able to treat them as builtin exceptions.

2 years ago[sanitizer] Update symbols after D113717
Vitaly Buka [Fri, 10 Dec 2021 05:50:32 +0000 (21:50 -0800)]
[sanitizer] Update symbols after D113717

2 years ago[RISCV] Unify depedency check and extension implication parsing logics
eopXD [Sat, 23 Oct 2021 10:18:24 +0000 (03:18 -0700)]
[RISCV] Unify depedency check and extension implication parsing logics

Originially there are two places that does parsing - `parseArchString` and
`parseFeatures`, each with its code on dependency check and implication.
This patch extracts common parts of the two  as functions of `RISCVISAInfo`
and let them 2 use it.

Reviewed By: asb

Differential Revision: https://reviews.llvm.org/D112359

2 years ago[RISCV] Fix arch string parsing for multi-character extensions
eopXD [Sat, 23 Oct 2021 05:25:57 +0000 (22:25 -0700)]
[RISCV] Fix arch string parsing for multi-character extensions

Current implementation can't parse extension names that contains digits
correctly (e.g. `zvl128b`). This patch fixes it.

Reviewed By: asb

Differential Revision: https://reviews.llvm.org/D109215

2 years agoFix crash from use of a temporary after its scope exit
Mehdi Amini [Fri, 10 Dec 2021 05:02:25 +0000 (05:02 +0000)]
Fix crash from use of a temporary after its scope exit

Introduced in D110448 and broke some bots (reported by ASAN).

Differential Revision: https://reviews.llvm.org/D110448

2 years ago[llvm] Use llvm::count (NFC)
Kazu Hirata [Fri, 10 Dec 2021 04:50:38 +0000 (20:50 -0800)]
[llvm] Use llvm::count (NFC)

2 years ago[AArch64][GlobalISel] Split vector stores of zero.
Amara Emerson [Fri, 10 Dec 2021 00:05:14 +0000 (16:05 -0800)]
[AArch64][GlobalISel] Split vector stores of zero.

This results in a very minor improvement in most cases, generating
stores of xzr instead of moving zero to a vector register.

Differential Revision: https://reviews.llvm.org/D115479

2 years ago[dfsan] Add missing test for the new pass manager with -dfsan-ignore-personality...
Taewook Oh [Thu, 9 Dec 2021 23:49:00 +0000 (15:49 -0800)]
[dfsan] Add missing test for the new pass manager with -dfsan-ignore-personality-routine

A test for the new pass manager was missed from the original diff D115317.

Reviewed By: browneee

Differential Revision: https://reviews.llvm.org/D115477

2 years agoSupport: Avoid using SmallVector::set_size() in MemoryBuffer
Duncan P. N. Exon Smith [Wed, 8 Dec 2021 01:22:47 +0000 (17:22 -0800)]
Support: Avoid using SmallVector::set_size() in MemoryBuffer

Update getMemoryBufferForStream() to use `resize_for_overwrite()` and
`truncate()` instead of `reserve()` and `set_size()`.

Differential Revision: https://reviews.llvm.org/D115384

2 years agoRevert "[X86][clang] Emit diagnostic for float and double when we have features ...
Phoebe Wang [Fri, 10 Dec 2021 02:31:09 +0000 (10:31 +0800)]
Revert "[X86][clang] Emit diagnostic for float and double when we have features -x87 and -sse on 64-bits"

This reverts commit 4a2c827b178f89d4cdeb56153d9440ad4ba786a3.

Need to fix the problem when using `-mno-sse` together with "x86intrin.h"

2 years agoRevert "[ASan] Shared optimized callbacks implementation."
Kirill Stoimenov [Fri, 10 Dec 2021 00:08:33 +0000 (00:08 +0000)]
Revert "[ASan] Shared optimized callbacks implementation."

This reverts commit 428ed61a921c092b638ee512c73d48352af915e6.

Build bot failure:
https://lab.llvm.org/buildbot/#/builders/37
https://lab.llvm.org/buildbot/#/builders/37/builds/9041

Reviewed By: kstoimenov

Differential Revision: https://reviews.llvm.org/D115489

2 years ago[mlir] Add filegroup for Conversion/PassDetail
Chia-hung Duan [Fri, 10 Dec 2021 02:03:50 +0000 (02:03 +0000)]
[mlir] Add filegroup for Conversion/PassDetail

Reviewed By: mehdi_amini

Differential Revision: https://reviews.llvm.org/D115487

2 years ago[flang] Fix folding of ac-implied-do indices in structure c'tors
Peter Klausler [Thu, 9 Dec 2021 21:00:54 +0000 (13:00 -0800)]
[flang] Fix folding of ac-implied-do indices in structure c'tors

Array constructors with implied DO loops that oversee structure
constructors were being prematurely folded into invalid constants
containing symbolic references to the ac-implied-do indices,
because they are indeed "constant expressions" as that term is
used in the Fortran standard and implemented as IsConstantExpr().
What's actually needed in structure constructor folding is a
test for actual constant values, which is what results from
folding them later with repetition in the context of folding
an ac-implied-do.

Differential Revision: https://reviews.llvm.org/D115470

2 years ago[Symbolizer][Debuginfo] Add debuginfod client to llvm-symbolizer.
Noah Shutty [Fri, 10 Dec 2021 01:27:28 +0000 (01:27 +0000)]
[Symbolizer][Debuginfo] Add debuginfod client to llvm-symbolizer.

Adds a fallback to use the debuginfod client library (386655) in `findDebugBinary`.
Fixed a cast of Erorr::success() to Expected<> in debuginfod library.
Added Debuginfod to Symbolize deps in gn.
Updates compiler-rt/lib/sanitizer_common/symbolizer/scripts/build_symbolizer.sh to include Debuginfod library to fix sanitizer-x86_64-linux breakage.

Reviewed By: jhenderson, vitalybuka

Differential Revision: https://reviews.llvm.org/D113717

2 years ago[X86][MS-InlineAsm] Make the constraint *m to be simple place holder
Phoebe Wang [Fri, 10 Dec 2021 00:41:02 +0000 (08:41 +0800)]
[X86][MS-InlineAsm] Make the constraint *m to be simple place holder

D113096 solved the "undefined reference to xxx" issue by adding
constraint *m for the global var. But it has strong side effect due to
the symbol in the assembly being replaced with constraint variable.
This leads to some lowering fails. https://godbolt.org/z/h3nWoerPe

This patch fix the problem by use the constraint *m as place holder
rather than real constraint. It has negligible effect for the existing
code generation.

Reviewed By: skan

Differential Revision: https://reviews.llvm.org/D115225

2 years agoRevert "[Symbolizer][Debuginfo] Add debuginfod client to llvm-symbolizer."
Noah Shutty [Fri, 10 Dec 2021 00:59:13 +0000 (00:59 +0000)]
Revert "[Symbolizer][Debuginfo] Add debuginfod client to llvm-symbolizer."

This reverts commit e2ad4f1756027cd27f6c82db620042e9877f900c because it
does not correctly fix the sanitizer buildbot breakage.

2 years ago[amdgpu][nfc] Delete dead code in LowerModuleLDS
Jon Chesterfield [Fri, 10 Dec 2021 00:43:23 +0000 (00:43 +0000)]
[amdgpu][nfc] Delete dead code in LowerModuleLDS

2 years ago[Symbolizer][Debuginfo] Add debuginfod client to llvm-symbolizer.
Noah Shutty [Fri, 10 Dec 2021 00:22:48 +0000 (00:22 +0000)]
[Symbolizer][Debuginfo] Add debuginfod client to llvm-symbolizer.

Adds a fallback to use the debuginfod client library (386655) in `findDebugBinary`.
Fixed a cast of Erorr::success() to Expected<> in debuginfod library.
Added Debuginfod to Symbolize deps in gn.
Adds new symbolizer symbols to `global_symbols.txt`.

Reviewed By: jhenderson

Differential Revision: https://reviews.llvm.org/D113717

2 years ago[NFC][tools] Return underlying strings directly instead of OS.str()
Logan Smith [Thu, 9 Dec 2021 23:03:19 +0000 (15:03 -0800)]
[NFC][tools] Return underlying strings directly instead of OS.str()

This avoids an unnecessary copy required by 'return OS.str()', allowing
instead for NRVO or implicit move. The .str() call (which flushes the
stream) is no longer required since 65b13610a5226b84889b923bae884ba395ad084d,
which made raw_string_ostream unbuffered by default.

Differential Revision: https://reviews.llvm.org/D115374

2 years ago[NFC][Sema] Return underlying strings directly instead of OS.str()
Logan Smith [Thu, 9 Dec 2021 23:02:58 +0000 (15:02 -0800)]
[NFC][Sema] Return underlying strings directly instead of OS.str()

This avoids an unnecessary copy required by 'return OS.str()', allowing
instead for NRVO or implicit move. The .str() call (which flushes the
stream) is no longer required since 65b13610a5226b84889b923bae884ba395ad084d,
which made raw_string_ostream unbuffered by default.

Differential Revision: https://reviews.llvm.org/D115374

2 years ago[NFC][clang] Return underlying strings directly instead of OS.str()
Logan Smith [Thu, 9 Dec 2021 23:02:35 +0000 (15:02 -0800)]
[NFC][clang] Return underlying strings directly instead of OS.str()

This avoids an unnecessary copy required by 'return OS.str()', allowing
instead for NRVO or implicit move. The .str() call (which flushes the
stream) is no longer required since 65b13610a5226b84889b923bae884ba395ad084d,
which made raw_string_ostream unbuffered by default.

Differential Revision: https://reviews.llvm.org/D115374

2 years ago[NFC][testing] Return underlying strings directly instead of OS.str()
Logan Smith [Thu, 9 Dec 2021 22:55:44 +0000 (14:55 -0800)]
[NFC][testing] Return underlying strings directly instead of OS.str()

This avoids an unnecessary copy required by 'return OS.str()', allowing
instead for NRVO or implicit move. The .str() call (which flushes the
stream) is no longer required since 65b13610a5226b84889b923bae884ba395ad084d,
which made raw_string_ostream unbuffered by default.

Differential Revision: https://reviews.llvm.org/D115374

2 years ago[NFC][AST] Return underlying strings directly instead of OS.str()
Logan Smith [Thu, 9 Dec 2021 22:52:30 +0000 (14:52 -0800)]
[NFC][AST] Return underlying strings directly instead of OS.str()

This avoids an unnecessary copy required by 'return OS.str()', allowing
instead for NRVO or implicit move. The .str() call (which flushes the
stream) is no longer required since 65b13610a5226b84889b923bae884ba395ad084d,
which made raw_string_ostream unbuffered by default.

Differential Revision: https://reviews.llvm.org/D115374

2 years ago[NFC][analyzer] Return underlying strings directly instead of OS.str()
Logan Smith [Thu, 9 Dec 2021 22:51:24 +0000 (14:51 -0800)]
[NFC][analyzer] Return underlying strings directly instead of OS.str()

This avoids an unnecessary copy required by 'return OS.str()', allowing
instead for NRVO or implicit move. The .str() call (which flushes the
stream) is no longer required since 65b13610a5226b84889b923bae884ba395ad084d,
which made raw_string_ostream unbuffered by default.

Differential Revision: https://reviews.llvm.org/D115374

2 years ago[ASan] Fixed Windows test by excluding macro instantiated INTERFACE_FUNCTION.
Kirill Stoimenov [Fri, 10 Dec 2021 00:03:51 +0000 (00:03 +0000)]
[ASan] Fixed Windows test by excluding macro instantiated INTERFACE_FUNCTION.

Reviewed By: kstoimenov

Differential Revision: https://reviews.llvm.org/D115478

2 years ago[ASan] Fix Windows build by excluding a test which requires assembly callback versions.
Kirill Stoimenov [Thu, 9 Dec 2021 23:38:54 +0000 (23:38 +0000)]
[ASan] Fix Windows build by excluding a test which requires assembly callback versions.

Reviewed By: kstoimenov

Differential Revision: https://reviews.llvm.org/D115475

2 years ago[libc] Use intrinsics for x86-64 fma and optimize PolyEval for x86-64 with degree...
Tue Ly [Wed, 8 Dec 2021 15:14:16 +0000 (10:14 -0500)]
[libc] Use intrinsics for x86-64 fma and optimize PolyEval for x86-64 with degree 3 & 5 polynomials.

- Use intrinsics for x86-64 fma
- Optimize PolyEval for x86-64 with degree 3 & 5 polynomials.
- There might be a slight loss of accuracy compared to Horner's scheme due to usages of higher powers x^2 and x^3 in the computations.

Reviewed By: sivachandra

Differential Revision: https://reviews.llvm.org/D115347

2 years ago[ASan] Fix Windows build by excluding asan_rtl_x86_64.S.
Kirill Stoimenov [Thu, 9 Dec 2021 23:23:21 +0000 (23:23 +0000)]
[ASan] Fix Windows build by excluding asan_rtl_x86_64.S.

Reviewed By: kstoimenov

Differential Revision: https://reviews.llvm.org/D115473

2 years ago[flang] Updated FIR dialect to _Both
Jacques Pienaar [Thu, 9 Dec 2021 03:49:00 +0000 (19:49 -0800)]
[flang] Updated FIR dialect to _Both

Change dialect (and remove now redundant accessors) to generate both
form of accessors of being generated. Tried to keep this change
reasonably minimal (this also includes keeping note about not generating
getType accessor to avoid shadowing).

Differential Revision: https://reviews.llvm.org/D115420

2 years ago[ASan] Shared optimized callbacks implementation.
Kirill Stoimenov [Thu, 9 Dec 2021 00:42:50 +0000 (00:42 +0000)]
[ASan] Shared optimized callbacks implementation.

This change moves optimized callbacks from each .o file to compiler-rt. Instead of using code generation it uses direct assembly implementation. Please note that the 'or' version is not implemented and it will produce unresolved external if somehow 'or' version is requested.

Reviewed By: vitalybuka

Differential Revision: https://reviews.llvm.org/D114558

2 years ago[bazel] Exclude MLModelRunnerTest.cpp
Mircea Trofin [Thu, 9 Dec 2021 22:53:50 +0000 (14:53 -0800)]
[bazel] Exclude MLModelRunnerTest.cpp

Until we figure MLGO + bazel, exclude this unittest (same as
TFUtilsTest.cpp)

Differential Revision: https://reviews.llvm.org/D115472

2 years ago[lldb/Target] Refine source display warning for artificial locations (NFC)
Med Ismail Bennani [Thu, 9 Dec 2021 19:46:05 +0000 (11:46 -0800)]
[lldb/Target] Refine source display warning for artificial locations (NFC)

This is a post-review update for D115313, to rephrase source display
warning messages for artificial locations, making them more
understandable for the end-user.

Differential Revision: https://reviews.llvm.org/D115461

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
2 years ago[PGO] Adjust BFI verification option default values [NFC]
Rong Xu [Thu, 9 Dec 2021 22:15:28 +0000 (14:15 -0800)]
[PGO] Adjust BFI verification option default values [NFC]

Slightly changed the default option values.
Also avoided some bogus output.

2 years ago[mlir][sparse] minor corrections and updates in sparse compiler doc
Aart Bik [Thu, 9 Dec 2021 21:30:03 +0000 (13:30 -0800)]
[mlir][sparse] minor corrections and updates in sparse compiler doc

Reviewed By: bixia

Differential Revision: https://reviews.llvm.org/D115467

2 years ago[libc++abi][AIX] Add 2 LIT tests for the AIX unwinder
Xing Xue [Thu, 9 Dec 2021 21:43:32 +0000 (16:43 -0500)]
[libc++abi][AIX] Add 2 LIT tests for the AIX unwinder

Summary:
This patch creates sub-directory libcxxabi/test/vendor/ibm and adds 2 LIT test cases for the AIX EH under the directory. One tests the restoration of the condition register and the other tests the restoration of vector registers. Both are saved on the stack by the function prologue.

Reviewed by: compnerd, libc++abi

Differential Revision: https://reviews.llvm.org/D114445

2 years ago[OpenMP][FIX] Pass the num_threads value directly to parallel_51
Joseph Huber [Thu, 9 Dec 2021 21:10:46 +0000 (16:10 -0500)]
[OpenMP][FIX] Pass the num_threads value directly to parallel_51

The problem with the old scheme is that we would need to keep track of
the "next region" and reset the num_threads value after it. The new RT
doesn't do it and an assertion is triggered. The old RT doesn't do it
either, I haven't tested it but I assume a num_threads clause might
impact multiple parallel regions "accidentally". Further, in SPMD mode
num_threads was simply ignored, for some reason beyond me.

In any case, parallel_51 is designed to take the clause value directly,
so let's do that instead.

Reviewed By: tianshilei1992

Differential Revision: https://reviews.llvm.org/D113623

2 years ago[flang] Simplify RaggedArrayHeader and make it plain C struct
Valentin Clement [Thu, 9 Dec 2021 21:27:49 +0000 (22:27 +0100)]
[flang] Simplify RaggedArrayHeader and make it plain C struct

- Join indirection and rank into a single value `flags`
- Make the struct a plain C struct.

Reviewed By: schweitz

Differential Revision: https://reviews.llvm.org/D115464

2 years ago[InstSimplify] Simplify bool icmp with not in LHS
Hasyimi Bahrudin [Thu, 9 Dec 2021 17:03:59 +0000 (12:03 -0500)]
[InstSimplify] Simplify bool icmp with not in LHS

Refer to https://llvm.org/PR52546.

Simplifies the following cases:
    not(X) == 0 -> X != 0 -> X
    not(X) <=u 0 -> X >u 0 -> X
    not(X) >=s 0 -> X <s 0 -> X
    not(X) != 1 -> X == 1 -> X
    not(X) <=u 1 -> X >=u 1 -> X
    not(X) >s 1 -> X <=s -1 -> X

Differential Revision: https://reviews.llvm.org/D114666

2 years ago[MLIR] PresburgerSetTest: expectEqual: pass by ref, not value
Arjun P [Thu, 9 Dec 2021 17:38:03 +0000 (23:08 +0530)]
[MLIR] PresburgerSetTest: expectEqual: pass by ref, not value

2 years ago[NFC] Use getAlign() instead of getAlignment() in haveSameSpecialState()
Arthur Eubanks [Thu, 9 Dec 2021 21:19:09 +0000 (13:19 -0800)]
[NFC] Use getAlign() instead of getAlignment() in haveSameSpecialState()

getAlignment() is deprecated.