1=========================
2LLVM 11.0.0 Release Notes
3=========================
4
5.. contents::
6    :local:
7
8.. warning::
9   These are in-progress notes for the upcoming LLVM 11 release.
10   Release notes for previous releases can be found on
11   `the Download Page <https://releases.llvm.org/download.html>`_.
12
13
14Introduction
15============
16
17This document contains the release notes for the LLVM Compiler Infrastructure,
18release 11.0.0.  Here we describe the status of LLVM, including major improvements
19from the previous release, improvements in various subprojects of LLVM, and
20some of the current users of the code.  All LLVM releases may be downloaded
21from the `LLVM releases web site <https://llvm.org/releases/>`_.
22
23For more information about LLVM, including information about the latest
24release, please check out the `main LLVM web site <https://llvm.org/>`_.  If you
25have questions or comments, the `LLVM Developer's Mailing List
26<https://lists.llvm.org/mailman/listinfo/llvm-dev>`_ is a good place to send
27them.
28
29Note that if you are reading this file from a Git checkout or the main
30LLVM web page, this document applies to the *next* release, not the current
31one.  To see the release notes for a specific release, please see the `releases
32page <https://llvm.org/releases/>`_.
33
34Non-comprehensive list of changes in this release
35=================================================
36.. NOTE
37   For small 1-3 sentence descriptions, just add an entry at the end of
38   this list. If your description won't fit comfortably in one bullet
39   point (e.g. maybe you would like to give an example of the
40   functionality, or simply have a lot to talk about), see the `NOTE` below
41   for adding a new subsection.
42
43* ...
44
45
46.. NOTE
47   If you would like to document a larger change, then you can add a
48   subsection about it right here. You can copy the following boilerplate
49   and un-indent it (the indentation causes it to be inside this comment).
50
51   Special New Feature
52   -------------------
53
54   Makes programs 10x faster by doing Special New Thing.
55
56
57Changes to the LLVM IR
58----------------------
59
60* The callsite attribute `vector-function-abi-variant
61  <https://llvm.org/docs/LangRef.html#call-site-attributes>`_ has been
62  added to describe the mapping between scalar functions and vector
63  functions, to enable vectorization of call sites. The information
64  provided by the attribute is interfaced via the API provided by the
65  ``VFDatabase`` class.
66
67* `dereferenceable` attributes and metadata on pointers no longer imply
68  anything about the alignment of the pointer in question. Previously, some
69  optimizations would make assumptions based on the type of the pointer. This
70  behavior was undocumented. To preserve optimizations, frontends may need to
71  be updated to generate appropriate `align` attributes and metadata.
72
73* The DIModule metadata is extended to contain file and line number
74  information. This information is used to represent Fortran modules debug
75  info at IR level.
76
77Changes to building LLVM
78------------------------
79
80Changes to the ARM Backend
81--------------------------
82
83During this release ...
84
85* Implemented C-language intrinsics for the full Arm v8.1-M MVE instruction
86  set. ``<arm_mve.h>`` now supports the complete API defined in the Arm C
87  Language Extensions.
88
89* Added support for assembly for the optional Custom Datapath Extension (CDE)
90  for Arm M-profile targets.
91
92* Implemented C-language intrinsics ``<arm_cde.h>`` for the CDE instruction set.
93
94* Clang now defaults to ``-fomit-frame-pointer`` when targeting non-Android
95  Linux for arm and thumb when optimizations are enabled. Users that were
96  previously not specifying a value and relying on the implicit compiler
97  default may wish to specify ``-fno-omit-frame-pointer`` to get the old
98  behavior. This improves compatibility with GCC.
99
100Changes to the MIPS Target
101--------------------------
102
103During this release ...
104
105
106Changes to the PowerPC Target
107-----------------------------
108
109During this release ...
110
111Changes to the X86 Target
112-------------------------
113
114During this release ...
115
116
117* Functions with the probe-stack attribute set to "inline-asm" are now protected
118  against stack clash without the need of a third-party probing function and
119  with limited impact on performance.
120* -x86-enable-old-knl-abi command line switch has been removed. v32i16/v64i8
121  vectors are always passed in ZMM register when avx512f is enabled and avx512bw
122  is disabled.
123* Vectors larger than 512 bits with i16 or i8 elements will be passed in
124  multiple ZMM registers when avx512f is enabled. Previously this required
125  avx512bw otherwise they would split into multiple YMM registers. This means
126  vXi16/vXi8 vectors are consistently treated the same as
127  vXi32/vXi64/vXf64/vXf32 vectors of the same total width.
128
129Changes to the AMDGPU Target
130-----------------------------
131
132* The backend default denormal handling mode has been switched to on
133  for all targets for all compute function types. Frontends wishing to
134  retain the old behavior should explicitly request f32 denormal
135  flushing.
136
137Changes to the AVR Target
138-----------------------------
139
140* Moved from an experimental backend to an official backend. AVR support is now
141  included by default in all LLVM builds and releases and is available under
142  the "avr-unknown-unknown" target triple.
143
144Changes to the WebAssembly Target
145---------------------------------
146
147* Programs which don't have a "main" function, called "reactors" are now
148  properly supported, with a new `-mexec-model=reactor` flag. Programs which
149  previously used `-Wl,--no-entry` to avoid having a main function should
150  switch to this new flag, so that static initialization is properly
151  performed.
152
153* `__attribute__((visibility("protected")))` now evokes a warning, as
154  WebAssembly does not support "protected" visibility.
155
156Changes to the OCaml bindings
157-----------------------------
158
159
160
161Changes to the C API
162--------------------
163
164
165Changes to the Go bindings
166--------------------------
167
168
169Changes to the DAG infrastructure
170---------------------------------
171
172
173Changes to the Debug Info
174---------------------------------
175
176* LLVM now supports the debug entry values (DW_OP_entry_value) production for
177  the x86, ARM, and AArch64 targets by default. Other targets can use
178  the utility by using the experimental option ("-debug-entry-values").
179  This is a debug info feature that allows debuggers to recover the value of
180  optimized-out parameters by going up a stack frame and interpreting the values
181  passed to the callee. The feature improves the debugging user experience when
182  debugging optimized code.
183
184Changes to the LLVM tools
185---------------------------------
186
187* Added an option (--show-section-sizes) to llvm-dwarfdump to show the sizes
188  of all debug sections within a file.
189
190* llvm-nm now implements the flag ``--special-syms`` and will filter out special
191  symbols, i.e. mapping symbols on ARM and AArch64, by default. This matches
192  the GNU nm behavior.
193
194Changes to LLDB
195===============
196
197External Open Source Projects Using LLVM 11
198===========================================
199
200* A project...
201
202
203Additional Information
204======================
205
206A wide variety of additional information is available on the `LLVM web page
207<https://llvm.org/>`_, in particular in the `documentation
208<https://llvm.org/docs/>`_ section.  The web page also contains versions of the
209API documentation which is up-to-date with the Git version of the source
210code.  You can access versions of these documents specific to this release by
211going into the ``llvm/docs/`` directory in the LLVM tree.
212
213If you have any questions or comments about LLVM, please feel free to contact
214us via the `mailing lists <https://llvm.org/docs/#mailing-lists>`_.
215