llvm-project/llvm
Ilya Leoshkevich d58f112ce0 Prevent FENTRY_CALL reordering
FEntryInserter prepends FENTRY_CALL to the first basic block. In case
there are other instructions, PostRA Machine Instruction Scheduler can
move FENTRY_CALL call around. This actually occurs on SystemZ (see the
testcase). This is bad for the following reasons:

* FENTRY_CALL clobbers registers.
* Linux Kernel depends on whatever FENTRY_CALL expands to to be the very
  first instruction in the function.

Fix by adding isCall attribute to FENTRY_CALL, which prevents reordering
by making it a scheduling boundary for PostRA Machine Instruction
Scheduler.

Reviewed By: niravd

Differential Revision: https://reviews.llvm.org/D91218
2020-12-09 00:59:01 +01:00
..
benchmarks
bindings
cmake [llvm] Update WinMsvc.cmake's fms-compatability to match llvm's prereqs 2020-12-04 16:35:05 -08:00
docs [XCore][docs] Fix XCore compiler writer documentation links. 2020-12-08 12:21:09 +00:00
examples
include Prevent FENTRY_CALL reordering 2020-12-09 00:59:01 +01:00
lib Prevent FENTRY_CALL reordering 2020-12-09 00:59:01 +01:00
projects
resources
runtimes
test Prevent FENTRY_CALL reordering 2020-12-09 00:59:01 +01:00
tools [gold][NPM] Use NPM with ENABLE_EXPERIMENTAL_NEW_PASS_MANAGER 2020-12-08 15:13:34 -08:00
unittests ADT: Add hash_value overload for Optional 2020-12-08 15:25:03 -08:00
utils [gn build] Port 39431e479f 2020-12-08 20:15:45 +00:00
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt repair cygwin build 2020-12-03 11:49:16 -05:00
CODE_OWNERS.TXT
CREDITS.TXT
LICENSE.TXT
README.txt
RELEASE_TESTERS.TXT
configure
llvm.spec.in

README.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.