<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git, branch release/13.x</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/'/>
<entry>
<title>[X86] combineVectorHADDSUB - remove the broken HOP(x,x) merging code (PR51974)</title>
<updated>2022-01-20T21:31:59+00:00</updated>
<author>
<name>Simon Pilgrim</name>
<email>llvm-dev@redking.me.uk</email>
</author>
<published>2021-09-27T09:39:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=75e33f71c2dae584b13a7d1186ae0a038ba98838'/>
<id>75e33f71c2dae584b13a7d1186ae0a038ba98838</id>
<content type='text'>
This intention of this code turns out to be superfluous as we can handle this with shuffle combining, and it has a critical flaw in that it doesn't check for dependencies.

Fixes PR51974

(cherry picked from commit 468ff703e114599ce8fb7457bd3c7ef0b219e952)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This intention of this code turns out to be superfluous as we can handle this with shuffle combining, and it has a critical flaw in that it doesn't check for dependencies.

Fixes PR51974

(cherry picked from commit 468ff703e114599ce8fb7457bd3c7ef0b219e952)
</pre>
</div>
</content>
</entry>
<entry>
<title>[CMake] Don't use -fno-semantic-interposition with Clang&lt;=13</title>
<updated>2022-01-20T21:29:49+00:00</updated>
<author>
<name>Fangrui Song</name>
<email>i@maskray.me</email>
</author>
<published>2022-01-13T23:38:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=6349865a8f3751a651f9451eac0405e01ee03a11'/>
<id>6349865a8f3751a651f9451eac0405e01ee03a11</id>
<content type='text'>
Clang 13 has a -fsanitize-coverage -fno-semantic-interposition bug (D117190)
which may lead to
`relocation R_X86_64_PC32 cannot be used against symbol` linker error
in -DLLVM_USE_SANITIZE_COVERAGE=ON build when a shared object is built (e.g.
-DLLVM_BUILD_LLVM_DYLIB=on).

For simplicity, just disallow Clang 13 entirely.

Note: GCC -fPIC performance benefits from -fno-semantic-interposition
dramatically. Clang benefits little. Using this option is more for a dogfood
purpose to test correctness of this option, because in the wild some important
packages like CPython uses this option.

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

(cherry picked from commit 1661c8cfcd6b286a1b5a599544afd87aa6b90243)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Clang 13 has a -fsanitize-coverage -fno-semantic-interposition bug (D117190)
which may lead to
`relocation R_X86_64_PC32 cannot be used against symbol` linker error
in -DLLVM_USE_SANITIZE_COVERAGE=ON build when a shared object is built (e.g.
-DLLVM_BUILD_LLVM_DYLIB=on).

For simplicity, just disallow Clang 13 entirely.

Note: GCC -fPIC performance benefits from -fno-semantic-interposition
dramatically. Clang benefits little. Using this option is more for a dogfood
purpose to test correctness of this option, because in the wild some important
packages like CPython uses this option.

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

(cherry picked from commit 1661c8cfcd6b286a1b5a599544afd87aa6b90243)
</pre>
</div>
</content>
</entry>
<entry>
<title>[ARM] Define ComplexPatternFuncMutatesDAG</title>
<updated>2022-01-20T21:24:23+00:00</updated>
<author>
<name>David Green</name>
<email>david.green@arm.com</email>
</author>
<published>2021-08-06T16:35:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=b3dcd156472fbea65dd002cd670c5ae96de0d438'/>
<id>b3dcd156472fbea65dd002cd670c5ae96de0d438</id>
<content type='text'>
Some of the Arm complex pattern functions call canExtractShiftFromMul,
which can modify the DAG in-place. For this to be valid and handled
successfully we need to define ComplexPatternFuncMutatesDAG.

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

(cherry picked from commit 77e8f4eeeeed516a1c79365a4b8128da463d96c4)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Some of the Arm complex pattern functions call canExtractShiftFromMul,
which can modify the DAG in-place. For this to be valid and handled
successfully we need to define ComplexPatternFuncMutatesDAG.

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

(cherry picked from commit 77e8f4eeeeed516a1c79365a4b8128da463d96c4)
</pre>
</div>
</content>
</entry>
<entry>
<title>[Driver][test] Fix undefined-libs.cpp when CLANG_DEFAULT_UNWINDLIB is libunwind</title>
<updated>2022-01-18T21:43:10+00:00</updated>
<author>
<name>Fangrui Song</name>
<email>i@maskray.me</email>
</author>
<published>2021-10-08T21:40:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=1f1854ce0fe5a0fea3d5ae8d9dc95d376ed8588f'/>
<id>1f1854ce0fe5a0fea3d5ae8d9dc95d376ed8588f</id>
<content type='text'>
(cherry picked from commit 3db1ade368e538ba795486eea4923e331a8dde5a)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
(cherry picked from commit 3db1ade368e538ba795486eea4923e331a8dde5a)
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[lld][CMake] Add LLD_DEFAULT_NOSTART_STOP_GC"</title>
<updated>2022-01-15T05:36:27+00:00</updated>
<author>
<name>Tom Stellard</name>
<email>tstellar@redhat.com</email>
</author>
<published>2022-01-15T05:36:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=fc043d8a256b1e431aa1297dffba154a7dd46b25'/>
<id>fc043d8a256b1e431aa1297dffba154a7dd46b25</id>
<content type='text'>
This reverts commit 9d9efb1f67ff70e996b1cb7fa00e24b9121be226.

This commit caused #53185.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit 9d9efb1f67ff70e996b1cb7fa00e24b9121be226.

This commit caused #53185.
</pre>
</div>
</content>
</entry>
<entry>
<title>[sanitizer] msan build fix on non linux platforms</title>
<updated>2022-01-15T05:16:50+00:00</updated>
<author>
<name>David Carlier</name>
<email>devnexen@gmail.com</email>
</author>
<published>2021-11-01T07:18:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=5869ea6c6254d848382f22f82b02b698d9c53260'/>
<id>5869ea6c6254d848382f22f82b02b698d9c53260</id>
<content type='text'>
(cherry picked from commit b4fb42300e39c99ac5bb9d02b304b713fabdec4d)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
(cherry picked from commit b4fb42300e39c99ac5bb9d02b304b713fabdec4d)
</pre>
</div>
</content>
</entry>
<entry>
<title>[Coroutines] Enhance symmetric transfer for constant CmpInst</title>
<updated>2022-01-12T20:06:51+00:00</updated>
<author>
<name>Chuanqi Xu</name>
<email>yedeng.yd@linux.alibaba.com</email>
</author>
<published>2022-01-12T02:14:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=b9a243d1cac2aae0596dc5a1f097e1adc1fe5102'/>
<id>b9a243d1cac2aae0596dc5a1f097e1adc1fe5102</id>
<content type='text'>
This fixes bug52896.

Simply, some symmetric transfer optimization chances get invalided due
to we delete some inlined optimization passes in 822b92a. This would
cause stack-overflow in some situations which should be avoided by the
design of coroutine. This patch tries to fix this by transforming the
constant CmpInst instruction which was done in the deleted passes.

Reviewed By: rjmccall, junparser

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

(cherry picked from commit 403772ff1ce5618c8d02316531386b415312274a)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This fixes bug52896.

Simply, some symmetric transfer optimization chances get invalided due
to we delete some inlined optimization passes in 822b92a. This would
cause stack-overflow in some situations which should be avoided by the
design of coroutine. This patch tries to fix this by transforming the
constant CmpInst instruction which was done in the deleted passes.

Reviewed By: rjmccall, junparser

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

(cherry picked from commit 403772ff1ce5618c8d02316531386b415312274a)
</pre>
</div>
</content>
</entry>
<entry>
<title>[lld][CMake] Add LLD_DEFAULT_NOSTART_STOP_GC</title>
<updated>2022-01-12T06:01:00+00:00</updated>
<author>
<name>Fangrui Song</name>
<email>i@maskray.me</email>
</author>
<published>2022-01-11T05:27:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=9d9efb1f67ff70e996b1cb7fa00e24b9121be226'/>
<id>9d9efb1f67ff70e996b1cb7fa00e24b9121be226</id>
<content type='text'>
This option is for groups who need time to accomodate the ld.lld -z
start-stop-gc default.

This is a modified version of https://reviews.llvm.org/D114186 that
enables this option by default.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This option is for groups who need time to accomodate the ld.lld -z
start-stop-gc default.

This is a modified version of https://reviews.llvm.org/D114186 that
enables this option by default.
</pre>
</div>
</content>
</entry>
<entry>
<title>[InlineCost] model calls to llvm.is.constant* more carefully</title>
<updated>2022-01-12T05:12:29+00:00</updated>
<author>
<name>Nick Desaulniers</name>
<email>ndesaulniers@google.com</email>
</author>
<published>2021-10-08T22:17:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=52a400d8e4c46876fae5d732c92df254a9ceae8f'/>
<id>52a400d8e4c46876fae5d732c92df254a9ceae8f</id>
<content type='text'>
llvm.is.constant* intrinsics are evaluated to 0 or 1 integral values.

A common use case for llvm.is.constant comes from the higher level
__builtin_constant_p. A common usage pattern of __builtin_constant_p in
the Linux kernel is:

    void foo (int bar) {
      if (__builtin_constant_p(bar)) {
        // lots of code that will fold away to a constant.
      } else {
        // a little bit of code, usually a libcall.
      }
    }

A minor issue in InlineCost calculations is when `bar` is _not_ Constant
and still will not be after inlining, we don't discount the true branch
and the inline cost of `foo` ends up being the cost of both branches
together, rather than just the false branch.

This leads to code like the above where inlining will not help prove bar
Constant, but it still would be beneficial to inline foo, because the
"true" branch is irrelevant from a cost perspective.

For example, IPSCCP can sink a passed constant argument to foo:

    const int x = 42;
    void bar (void) { foo(x); }

This improves our inlining decisions, and fixes a few head scratching
cases were the disassembly shows a relatively small `foo` not inlined
into a lone caller.

We could further improve this modeling by tracking whether the argument
to llvm.is.constant* is a parameter of the function, and if inlining
would allow that parameter to become Constant. This idea is noted in a
FIXME comment.

Link: https://github.com/ClangBuiltLinux/linux/issues/1302

Reviewed By: kazu

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

(cherry picked from commit 9697f93587f46300814f1c6c68af347441d6e05d)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
llvm.is.constant* intrinsics are evaluated to 0 or 1 integral values.

A common use case for llvm.is.constant comes from the higher level
__builtin_constant_p. A common usage pattern of __builtin_constant_p in
the Linux kernel is:

    void foo (int bar) {
      if (__builtin_constant_p(bar)) {
        // lots of code that will fold away to a constant.
      } else {
        // a little bit of code, usually a libcall.
      }
    }

A minor issue in InlineCost calculations is when `bar` is _not_ Constant
and still will not be after inlining, we don't discount the true branch
and the inline cost of `foo` ends up being the cost of both branches
together, rather than just the false branch.

This leads to code like the above where inlining will not help prove bar
Constant, but it still would be beneficial to inline foo, because the
"true" branch is irrelevant from a cost perspective.

For example, IPSCCP can sink a passed constant argument to foo:

    const int x = 42;
    void bar (void) { foo(x); }

This improves our inlining decisions, and fixes a few head scratching
cases were the disassembly shows a relatively small `foo` not inlined
into a lone caller.

We could further improve this modeling by tracking whether the argument
to llvm.is.constant* is a parameter of the function, and if inlining
would allow that parameter to become Constant. This idea is noted in a
FIXME comment.

Link: https://github.com/ClangBuiltLinux/linux/issues/1302

Reviewed By: kazu

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

(cherry picked from commit 9697f93587f46300814f1c6c68af347441d6e05d)
</pre>
</div>
</content>
</entry>
<entry>
<title>ARM: make FastISel &amp; GISel pass -1 to ADJCALLSTACKUP to signal no callee pop.</title>
<updated>2022-01-12T05:08:21+00:00</updated>
<author>
<name>Tim Northover</name>
<email>t.p.northover@gmail.com</email>
</author>
<published>2022-01-07T13:49:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=eaeb7dcf32495155b5d430d2a650a211c9b230af'/>
<id>eaeb7dcf32495155b5d430d2a650a211c9b230af</id>
<content type='text'>
The interface for these instructions changed with support for mandatory tail
calls, and now -1 indicates the CalleePopAmount argument is not valid.
Unfortunately I didn't realise FastISel or GISel did calls at the time so
didn't update them.

(cherry picked from commit 0b5b35fdbdbf029bb6915e183541556c4eeadd3f)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The interface for these instructions changed with support for mandatory tail
calls, and now -1 indicates the CalleePopAmount argument is not valid.
Unfortunately I didn't realise FastISel or GISel did calls at the time so
didn't update them.

(cherry picked from commit 0b5b35fdbdbf029bb6915e183541556c4eeadd3f)
</pre>
</div>
</content>
</entry>
</feed>
