llvm-project/llvm
Oliver Stannard 7772f023b5 [TableGen] Fix sort order of asm operand classes
This is a fix for https://llvm.org/bugs/show_bug.cgi?id=22796.

The previous implementation of ClassInfo::operator< allowed cycles of classes
such that x < y < z < x, meaning that a list of them cannot be correctly
sorted, and the sort order could differ with different standard libraries.

The original implementation sorted classes by ValueName if they were otherwise
equal. This isn't strictly necessary, but some backends seem to accidentally
rely on it. If I reverse this comparison I get 8 test failures spread across
the AArch64, Mips and X86 backends, so I have left it in until those backends
can be fixed.

There was one case in the X86 backend where the observable behaviour of the
assembler is changed by this patch. This was because some of the memory asm
operands were not marked as children of X86MemAsmOperand.

Differential Revision: http://reviews.llvm.org/D16141

llvm-svn: 258677
2016-01-25 10:20:19 +00:00
..
autoconf Update version to 3.9. 2016-01-13 17:32:32 +00:00
bindings Deprecate a few C APIs. 2015-12-18 23:46:42 +00:00
cmake [cmake] Disable manifest generation when LLD is the linker 2016-01-22 23:27:13 +00:00
docs [libFuzzer] add -abort_on_timeout option 2016-01-23 19:34:19 +00:00
examples Fix examples corresponding to r257302. 2016-01-11 05:04:20 +00:00
include AVX512: VMOVDQU8/16/32/64 (load) intrinsic implementation. 2016-01-24 08:04:33 +00:00
lib [TableGen] Fix sort order of asm operand classes 2016-01-25 10:20:19 +00:00
projects
resources
test AVX1 : Enable vector masked_load/store to AVX1. 2016-01-25 10:17:11 +00:00
tools [llvm-size] Use stderr instead of stdout for error messages. 2016-01-25 01:24:15 +00:00
unittests ObjectTransformLayerTest.cpp: Rework r258633. [-Winconsistent-missing-override] 2016-01-23 20:48:50 +00:00
utils [TableGen] Fix sort order of asm operand classes 2016-01-25 10:20:19 +00:00
.arcconfig
.clang-format
.clang-tidy adding readability-identifier-naming to llvm clang-tidy configuration. 2015-12-08 17:44:51 +00:00
.gitignore
CMakeLists.txt [GlobalISel] Add the proper cmake plumbing. 2016-01-20 20:58:56 +00:00
CODE_OWNERS.TXT The PS4 baton passes. 2015-12-19 20:04:03 +00:00
CREDITS.TXT
LICENSE.TXT
LLVMBuild.txt
Makefile
Makefile.common
Makefile.config.in
Makefile.rules
README.txt Revert previous test commit. 2016-01-04 19:13:29 +00:00
configure Update version to 3.9. 2016-01-13 17:32:32 +00:00
llvm.spec.in

README.txt

Low Level Virtual Machine (LLVM)
================================

This directory and its subdirectories contain source code for LLVM,
a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

If you are writing a package for LLVM, see docs/Packaging.rst for our
suggestions.