SuccessChanges

Summary

  1. [zorg] Remove flang-aarch64-ubuntu-out-of-tree-new-driver (details)
Commit de74f83353c32d08126bddb778b9d89cc2708e46 by diana.picus
[zorg] Remove flang-aarch64-ubuntu-out-of-tree-new-driver

The new driver is on by default now, so this builder does the same thing
as flang-aarch64-ubuntu-out-of-tree.

Differential Revision: https://reviews.llvm.org/D102319
The file was modifiedbuildbot/osuosl/master/config/builders.py (diff)
The file was modifiedbuildbot/osuosl/master/config/workers.py (diff)

Summary

  1. [cfe] Support target-specific escaped character in inline asm (details)
  2. [JITLink] Enable creation and management of mutable block content. (details)
  3. AMDGPU/GlobalISel: Legalize G_[SU]DIVREM instructions (details)
  4. [Test] Add test for unreachable backedge with duplicating predecessors (details)
  5. [LoopDeletion] Break backedge if we can prove that the loop is exited on 1st iteration (details)
  6. [JITLink] Suppress expect-death test in release mode. (details)
  7. [RISCV] Optimize xor/or with immediate in the zbs extension (details)
  8. [analyzer][ctu] Avoid parsing invocation list again and again during on-demand parsing of CTU (details)
  9. Revert "[analyzer][ctu] Avoid parsing invocation list again and again during on-demand parsing of CTU" (details)
  10. [GlobalISel] Fix MachineIRBuilder not using the DstOp argument for G_SHUFFLE_VECTOR. (details)
  11. [analyzer][ctu] Reland "Avoid parsing invocation list again and again.. (details)
  12. [libomptarget][nfc] Accept callable for hsa iterate_symbols (details)
  13. [TRE] Reland: allow TRE for non-capturing calls. (details)
Commit 6685a3f3e4c497a3a0fd06aa4e77cb442325d1ba by minyihh
[cfe] Support target-specific escaped character in inline asm

GCC allows each target to define a set of non-letter and non-digit
escaped characters for inline assembly that will be replaced by another
string (They call this "punctuation" characters. The existing "%%" and
"%{" -- replaced by '%' and '{' at the end -- can be seen as special
cases shared by all targets).
This patch implements this feature by adding a new hook in `TargetInfo`.

Differential Revision: https://reviews.llvm.org/D103036
The file was modifiedclang/lib/Basic/Targets/M68k.h
The file was modifiedclang/lib/Basic/Targets/M68k.cpp
The file was addedclang/test/CodeGen/m68k-asm.c
The file was modifiedclang/include/clang/Basic/TargetInfo.h
The file was modifiedclang/lib/AST/Stmt.cpp
Commit 82ad2b6e94b6e9285de38aab9e2e5d87b06a377b by Lang Hames
[JITLink] Enable creation and management of mutable block content.

This patch introduces new operations on jitlink::Blocks: setMutableContent,
getMutableContent and getAlreadyMutableContent. The setMutableContent method
will set the block content data and size members and flag the content as
mutable. The getMutableContent method will return a mutable copy of the existing
content value, auto-allocating and populating a new mutable copy if the existing
content is marked immutable. The getAlreadyMutableMethod asserts that the
existing content is already mutable and returns it.

setMutableContent should be used when updating the block with totally new
content backed by mutable memory. It can be used to change the size of the
block. The argument value should *not* be shared with any other block.

getMutableContent should be used when clients want to modify the existing
content and are unsure whether it is mutable yet.

getAlreadyMutableContent should be used when clients want to modify the existing
content and know from context that it must already be immutable.

These operations reduce copy-modify-update boilerplate and unnecessary copies
introduced when clients couldn't me sure whether the existing content was
mutable or not.
The file was modifiedllvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.h
The file was modifiedllvm/lib/ExecutionEngine/JITLink/MachO_x86_64.cpp
The file was modifiedllvm/lib/ExecutionEngine/JITLink/MachO_arm64.cpp
The file was modifiedllvm/include/llvm/ExecutionEngine/JITLink/JITLink.h
The file was modifiedllvm/include/llvm/ExecutionEngine/JITLink/x86_64.h
The file was modifiedllvm/unittests/ExecutionEngine/JITLink/LinkGraphTests.cpp
The file was modifiedllvm/lib/ExecutionEngine/JITLink/ELF_x86_64.cpp
The file was modifiedllvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.cpp
Commit 90d784053f070f734de5b23da892e470a3b4e738 by Christudasan.Devadasan
AMDGPU/GlobalISel: Legalize G_[SU]DIVREM instructions

Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D100726
The file was addedllvm/test/CodeGen/AMDGPU/GlobalISel/udivrem.ll
The file was addedllvm/test/CodeGen/AMDGPU/GlobalISel/sdivrem.ll
The file was modifiedllvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
The file was modifiedllvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
The file was modifiedllvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.h
Commit ce245246043d3c4f12515b2c773ed6c9174345b5 by mkazantsev
[Test] Add test for unreachable backedge with duplicating predecessors
The file was modifiedllvm/test/Transforms/LoopDeletion/eval_first_iteration.ll
Commit 2531fd70d19aa5d61feb533bbdeee7717a4129eb by mkazantsev
[LoopDeletion] Break backedge if we can prove that the loop is exited on 1st iteration

This patch handles one particular case of one-iteration loops for which SCEV
cannot straightforwardly prove BECount = 1. The idea of the optimization is to
symbolically execute conditional branches on the 1st iteration, moving in topoligical
order, and only visiting blocks that may be reached on the first iteration. If we find out
that we never reach header via the latch, then the backedge can be broken.

Differential Revision: https://reviews.llvm.org/D102615
Reviewed By: reames
The file was modifiedllvm/test/Transforms/LoopDeletion/zero-btc.ll
The file was modifiedllvm/lib/Transforms/Scalar/LoopDeletion.cpp
The file was modifiedllvm/test/Transforms/LoopDeletion/eval_first_iteration.ll
The file was modifiedllvm/test/Transforms/LoopDeletion/noop-loops-with-subloops.ll
Commit 0ab14f19685eefa38cf2598071a18b0e117c4b30 by Lang Hames
[JITLink] Suppress expect-death test in release mode.
The file was modifiedllvm/unittests/ExecutionEngine/JITLink/LinkGraphTests.cpp
Commit bf77317049a880af541e31ba7ea43cb229ee4c0f by powerman1st
[RISCV] Optimize xor/or with immediate in the zbs extension

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D102893
The file was modifiedllvm/test/CodeGen/RISCV/rv64zbs.ll
The file was modifiedllvm/lib/Target/RISCV/RISCVInstrInfoB.td
The file was modifiedllvm/test/CodeGen/RISCV/rv32zbs.ll
Commit db8af0f21dc9aad4d336754c857c24470afe53e3 by balazs.benics
[analyzer][ctu] Avoid parsing invocation list again and again during on-demand parsing of CTU

During CTU, the *on-demand parsing* will read and parse the invocation
list to know how to compile the file being imported. However, it seems
that the invocation list will be parsed again if a previous parsing
has failed.
Then, parse again and fail again. This patch tries to overcome the
problem by storing the error code during the first parsing, and
re-create the stored error during the later parsings.

Reviewed By: steakhal

Patch By: OikawaKirie!

Differential Revision: https://reviews.llvm.org/D101763
The file was modifiedclang/lib/CrossTU/CrossTranslationUnit.cpp
The file was addedclang/test/Analysis/ctu-on-demand-parsing-multiple-invocation-list-parsing.cpp
The file was modifiedclang/include/clang/CrossTU/CrossTranslationUnit.h
Commit f05b70c23687fdf3de349ab1dd99ad79c4c40e85 by balazs.benics
Revert "[analyzer][ctu] Avoid parsing invocation list again and again during on-demand parsing of CTU"

This reverts commit db8af0f21dc9aad4d336754c857c24470afe53e3.

clang-x86_64-debian-fast fails on this.

+ : 'RUN: at line 4'
+ /usr/bin/ccache
/b/1/clang-x86_64-debian-fast/llvm.src/clang/test/Analysis/ctu-on-demand-parsing-multiple-invocation-list-parsing.cpp
-fPIC -shared -o
/b/1/clang-x86_64-debian-fast/llvm.obj/tools/clang/test/Analysis/Output/ctu-on-demand-parsing-multiple-invocation-list-parsing.cpp.tmp/mock_open.so
ccache: error: execv of
/b/1/clang-x86_64-debian-fast/llvm.src/clang/test/Analysis/ctu-on-demand-parsing-multiple-invocation-list-parsing.cpp
failed: Permission denied
The file was modifiedclang/include/clang/CrossTU/CrossTranslationUnit.h
The file was removedclang/test/Analysis/ctu-on-demand-parsing-multiple-invocation-list-parsing.cpp
The file was modifiedclang/lib/CrossTU/CrossTranslationUnit.cpp
Commit ff30436dc5e54b85b5b942a3a84d0720f657b36f by Amara Emerson
[GlobalISel] Fix MachineIRBuilder not using the DstOp argument for G_SHUFFLE_VECTOR.
The file was modifiedllvm/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp
Commit d59b4acf80d59c461decd41400988febaf0af8ca by balazs.benics
[analyzer][ctu] Reland "Avoid parsing invocation list again and again..

..during on-demand parsing of CTU"

During CTU, the *on-demand parsing* will read and parse the invocation
list to know how to compile the file being imported. However, it seems
that the invocation list will be parsed again if a previous parsing
has failed.
Then, parse again and fail again. This patch tries to overcome the
problem by storing the error code during the first parsing, and
re-create the stored error during the later parsings.

Reland without test.

Reviewed By: steakhal

Patch By: OikawaKirie!

Differential Revision: https://reviews.llvm.org/D101763
The file was modifiedclang/include/clang/CrossTU/CrossTranslationUnit.h
The file was modifiedclang/lib/CrossTU/CrossTranslationUnit.cpp
Commit 75492e20fb7c8e3fc4bc0ff8a5eda844056652cb by jonathanchesterfield
[libomptarget][nfc] Accept callable for hsa iterate_symbols

[libomptarget][nfc] Accept callable for hsa iterate_symbols
Candidate refactor to simplify D102692

Reviewed By: pdhaliwal

Differential Revision: https://reviews.llvm.org/D103030
The file was modifiedopenmp/libomptarget/plugins/amdgpu/impl/system.cpp
Commit 10c2e261598a9c1b641b5adb10d87d937aba8b58 by a.v.lapshin
[TRE] Reland: allow TRE for non-capturing calls.

The D82085 "allow TRE for non-capturing calls" caused failure during bootstrap.
This patch does the same as D82085 plus fixes bootstrap error.

The problem with D82085 is that it does not create copies for byval
operands, while replacing function call with a branch.

Consider following example:

```
    int zoo ( S p1 );

    int foo ( int count, S p1 ) {
      if ( count > 10 )
        return zoo(p1);

      // temporarily variable created for passing byvalue parameter
      // p1 could be used when zoo(p1) is called(after TRE is done).
      // lifetime.start p1.byvalue.temp
      return foo(count+1, p1);
      // lifetime.end p1.byvalue.temp
    }
```

After recursive call to foo is replaced with a jump into
start of the function, its parameters could be passed to
zoo function. i.e. temporarily variable created for byvalue
parameter "p1" could be passed to zoo. Finally zoo receives
broken operand:

```
    int foo ( int count, S p1 ) {
    :tailrecurse
      p1_tr = phi p1, p1.byvalue.temp
      if ( count > 10 )
        return zoo(p1_tr);

      // temporarily variable created for passing byvalue parameter
      // p1 could be used when zoo(p1) is called(after TRE is done).
      lifetime.start p1.byvalue.temp
      memcpy (p1.byvalue.temp, p1_tr)
      count = count + 1
      lifetime.end p1.byvalue.temp
      br tailrecurse
    }
```

To prevent using p1.byvalue.temp after its scope finished by
lifetime.end marker this patch copies value from p1.byvalue.temp
into another temporarily variable and then copies this variable
into the input parameter for next iteration.

This patch passes bootstrap build and bootstrap build with AddressSanitizer.

Differential Revision: https://reviews.llvm.org/D85614
The file was modifiedllvm/test/Transforms/TailCallElim/basic.ll
The file was modifiedllvm/lib/Transforms/Scalar/TailRecursionElimination.cpp
The file was addedllvm/test/Transforms/TailCallElim/tre-byval-parameter-2.ll
The file was addedllvm/test/Transforms/TailCallElim/tre-multiple-exits.ll
The file was addedllvm/test/Transforms/TailCallElim/tre-byval-parameter.ll
The file was addedllvm/test/Transforms/TailCallElim/tre-noncapturing-alloca-calls.ll

Summary

  1. [zorg] Remove flang-aarch64-ubuntu-out-of-tree-new-driver (details)
Commit de74f83353c32d08126bddb778b9d89cc2708e46 by diana.picus
[zorg] Remove flang-aarch64-ubuntu-out-of-tree-new-driver

The new driver is on by default now, so this builder does the same thing
as flang-aarch64-ubuntu-out-of-tree.

Differential Revision: https://reviews.llvm.org/D102319
The file was modifiedbuildbot/osuosl/master/config/builders.py
The file was modifiedbuildbot/osuosl/master/config/workers.py