llvm-capstone/llvm
Bjorn Pettersson a8a31fdd80 [Scalarizer] Fix a non-deterministic scatter order problem
Summary:
The indexing operator in Scatterer may result in building new
instructions. When using multiple such operators in a function
argument list the order in which we build instructions depend on
argument evaluation order (which is undefined in C++).
This patch avoid such problems by expanding the components using
the [] operator prior to the function call.

Problem was seen when comparing output, while builing LLVM with
different compilers (clang vs gcc).

Reviewers: foad, cameron.mcinally, uabelho

Reviewed By: foad

Subscribers: hiraditya, mgrang, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D78455
2020-04-20 16:05:33 +02:00
..
benchmarks
bindings
cmake [nfc] Cleanup extension header generation 2020-04-20 14:44:34 +02:00
docs [NFC] Remove waymarking because it improves performances 2020-04-17 11:27:10 +02:00
examples [ORC] Add example showing how to initialize/deinitialize a JITDylib with LLJIT. 2020-04-18 14:16:54 -07:00
include [GlobalISel] Introduce InlineAsmLowering class 2020-04-20 15:10:18 +02:00
lib [Scalarizer] Fix a non-deterministic scatter order problem 2020-04-20 16:05:33 +02:00
projects
resources
runtimes
test [Scalarizer] Fix a non-deterministic scatter order problem 2020-04-20 16:05:33 +02:00
tools [obj2yaml] - Teach obj2yaml to dump SHT_NOBITS sections when dumping program headers. 2020-04-20 14:35:28 +03:00
unittests [FileCheck] - Refactor the code related to string arrays. NFCI. 2020-04-20 14:54:49 +03:00
utils [gn build] Port 12030494fc 2020-04-20 13:10:45 +00:00
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt
CODE_OWNERS.TXT
configure
CREDITS.TXT
LICENSE.TXT
llvm.spec.in
LLVMBuild.txt
README.txt
RELEASE_TESTERS.TXT

The LLVM Compiler Infrastructure
================================

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.