FailedChanges

Summary

  1. [ASTImporter][ASTImporterSpecificLookup] Add test for different operators Summary: This is to check that operators are handled properly in `ASTImporterSpecificLookup`. Note, this lookup table is not used in LLDB, only in CTU. Reviewers: a_sidorin, shafik, a.sidorin Subscribers: rnkovacs, dkrupp, Szelethus, gamesh411, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D57905
  2. [AST] Fix structural inequivalence of operators Summary: Operators kind was not checked, so we reported e.g. op- to be equal with op+ Reviewers: shafik, a_sidorin, aaron.ballman Subscribers: rnkovacs, dkrupp, Szelethus, gamesh411, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D57902
  3. [LoopSimplifyCFG] Use DTU.applyUpdates instead of insert/deleteEdge `insert/deleteEdge` methods in DTU can make updates incorrectly in some cases (see https://bugs.llvm.org/show_bug.cgi?id=40528), and it is recommended to use `applyUpdates` methods instead when it is needed to make a mass update in CFG. Differential Revision: https://reviews.llvm.org/D57316 Reviewed By: kuhar
  4. [ARM] Add OptMinSize to ARMSubtarget In many places in the backend, we like to know whether we're optimising for code size and this is performed by checking the current machine function attributes. A subtarget is created on a per-function basis, so it's possible to know when we're compiling for code size on construction so record this in the new object. Differential Revision: https://reviews.llvm.org/D57812
  5. [CodeExtractor] Update function's assumption cache after extracting blocks from it Summary: Assumption cache's self-updating mechanism does not correctly handle the case when blocks are extracted from the function by the CodeExtractor. As a result function's assumption cache may have stale references to the llvm.assume calls that were moved to the outlined function. This patch fixes this problem by removing extracted llvm.assume calls from the function’s assumption cache. Reviewers: hfinkel, vsk, fhahn, davidxl, sanjoy Reviewed By: hfinkel, vsk Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D57215
  6. [WebAssembly] Fix parseImmediate's memory alignment requirement This fixes the current failure in the x86-64 ubsan bot caused by r353496.
  7. [GISel]: While constructing the GISelWorklist make sure we reserve at least the required size to the underlying dense map. https://reviews.llvm.org/D57931 This should save some unnecessary growing of the DenseMap.
  8. AMDGPU/GlobalISel: Legalize addrspacecast Use a placeholder constant for now on targets that need the load from the queue ptr.
  9. [WebAssembly] Fixed Disassembler ignoring endian swap on big endian. Summary: This fixes: https://bugs.llvm.org/show_bug.cgi?id=40620 Reviewers: aheejin Subscribers: dschuff, sbc100, jgravelle-google, sunfish, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D57933
  10. Variable auto-init: fix __block initialization Summary: Automatic initialization [1] of __block variables was trampling over the block's headers after they'd been initialized, which caused self-init usage to crash, such as here: typedef struct XYZ { void (^block)(); } *xyz_t; __attribute__((noinline)) xyz_t create(void (^block)()) { xyz_t myself = malloc(sizeof(struct XYZ)); myself->block = block; return myself; } int main() { __block xyz_t captured = create(^(){ (void)captured; }); } This type of code shouldn't be broken by variable auto-init, even if it's sketchy. [1] With -ftrivial-auto-var-init=pattern <rdar://problem/47798396> Reviewers: rjmccall, pcc, kcc Subscribers: jkorous, dexonsmith, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D57797
  11. [libFuzzer] refactor the way we choose the element to cross-over with, NFC (expected1); add a flag -seed_inputs= to pass extra seed inputs as file paths, not dirs
  12. [COFF, ARM64] Fix types for _ReadStatusReg, _WriteStatusReg r344765 added those intrinsics, but used the wrong types. Patch by Mike Hommey Differential Revision: https://reviews.llvm.org/D57636
  13. Fix the lowering issue of intrinsics llvm.localaddress on X86 Patch by Yuanke Luo Reviewers: craig.topper, annita.zhang, smaslov, rnk, wxiao3 Reviewed By: rnk Subscribers: efriedma, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D57501
  14. lvm-dwarfdump: Stop counting out-of-line subprogram in the "inlined functions" statistic. DW_TAG_subprogram DIEs should not be counted in the inlined function statistic. This also addresses the source variables count, as that uses the inlined function count in its calculations. Differential revision: https://reviews.llvm.org/D57849
  15. [NFC] Variable auto-init: use getAsVariableArrayType helper As suggested by @rjmccall in D57797.
  16. [X86] Add FPCW as a register and start using it as an implicit use on floating point instructions. Summary: FPCW contains the rounding mode control which we manipulate to implement fp to integer conversion by changing the roudning mode, storing the value to the stack, and then changing the rounding mode back. Because we didn't model FPCW and its dependency chain, other instructions could be scheduled into the middle of the sequence. This patch introduces the register and adds it as an implciit def of FLDCW and implicit use of the FP binary arithmetic instructions and store instructions. There are more instructions that need to be updated, but this is a good start. I believe this fixes at least the reduced test case from PR40529. Reviewers: RKSimon, spatel, rnk, efriedma, andrew.w.kaylor Subscribers: dim, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D57735
  17. [libFuzzer] add a test for built-in CrossOver (there are unit tests for this, but it's worth having a full integration test like this)
Revision 353505 by martong:
[ASTImporter][ASTImporterSpecificLookup] Add test for different operators

Summary:
This is to check that operators are handled properly in
`ASTImporterSpecificLookup`.  Note, this lookup table is not used in LLDB, only
in CTU.

Reviewers: a_sidorin, shafik, a.sidorin

Subscribers: rnkovacs, dkrupp, Szelethus, gamesh411, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D57905
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/unittests/AST/ASTImporterTest.cpp (diff)clang.src/unittests/AST/ASTImporterTest.cpp
Revision 353504 by martong:
[AST] Fix structural inequivalence of operators

Summary: Operators kind was not checked, so we reported e.g. op- to be equal with op+

Reviewers: shafik, a_sidorin, aaron.ballman

Subscribers: rnkovacs, dkrupp, Szelethus, gamesh411, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D57902
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/AST/ASTStructuralEquivalence.cpp (diff)clang.src/lib/AST/ASTStructuralEquivalence.cpp
The file was modified/cfe/trunk/unittests/AST/StructuralEquivalenceTest.cpp (diff)clang.src/unittests/AST/StructuralEquivalenceTest.cpp
Revision 353502 by mkazantsev:
[LoopSimplifyCFG] Use DTU.applyUpdates instead of insert/deleteEdge

`insert/deleteEdge` methods in DTU can make updates incorrectly in some cases
(see https://bugs.llvm.org/show_bug.cgi?id=40528), and it is recommended to
use `applyUpdates` methods instead when it is needed to make a mass update in CFG.

Differential Revision: https://reviews.llvm.org/D57316
Reviewed By: kuhar
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/Scalar/LoopSimplifyCFG.cpp (diff)llvm.src/lib/Transforms/Scalar/LoopSimplifyCFG.cpp
The file was modified/llvm/trunk/test/Transforms/LoopSimplifyCFG/constant-fold-branch.ll (diff)llvm.src/test/Transforms/LoopSimplifyCFG/constant-fold-branch.ll
Revision 353501 by sam_parker:
[ARM] Add OptMinSize to ARMSubtarget
   
In many places in the backend, we like to know whether we're
optimising for code size and this is performed by checking the
current machine function attributes. A subtarget is created on a
per-function basis, so it's possible to know when we're compiling for
code size on construction so record this in the new object.

Differential Revision: https://reviews.llvm.org/D57812
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/ARM/ARMBaseInstrInfo.cpp (diff)llvm.src/lib/Target/ARM/ARMBaseInstrInfo.cpp
The file was modified/llvm/trunk/lib/Target/ARM/ARMFastISel.cpp (diff)llvm.src/lib/Target/ARM/ARMFastISel.cpp
The file was modified/llvm/trunk/lib/Target/ARM/ARMISelDAGToDAG.cpp (diff)llvm.src/lib/Target/ARM/ARMISelDAGToDAG.cpp
The file was modified/llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp (diff)llvm.src/lib/Target/ARM/ARMISelLowering.cpp
The file was modified/llvm/trunk/lib/Target/ARM/ARMISelLowering.h (diff)llvm.src/lib/Target/ARM/ARMISelLowering.h
The file was modified/llvm/trunk/lib/Target/ARM/ARMInstrInfo.cpp (diff)llvm.src/lib/Target/ARM/ARMInstrInfo.cpp
The file was modified/llvm/trunk/lib/Target/ARM/ARMInstrInfo.td (diff)llvm.src/lib/Target/ARM/ARMInstrInfo.td
The file was modified/llvm/trunk/lib/Target/ARM/ARMInstructionSelector.cpp (diff)llvm.src/lib/Target/ARM/ARMInstructionSelector.cpp
The file was modified/llvm/trunk/lib/Target/ARM/ARMLoadStoreOptimizer.cpp (diff)llvm.src/lib/Target/ARM/ARMLoadStoreOptimizer.cpp
The file was modified/llvm/trunk/lib/Target/ARM/ARMRegisterInfo.td (diff)llvm.src/lib/Target/ARM/ARMRegisterInfo.td
The file was modified/llvm/trunk/lib/Target/ARM/ARMSelectionDAGInfo.cpp (diff)llvm.src/lib/Target/ARM/ARMSelectionDAGInfo.cpp
The file was modified/llvm/trunk/lib/Target/ARM/ARMSubtarget.cpp (diff)llvm.src/lib/Target/ARM/ARMSubtarget.cpp
The file was modified/llvm/trunk/lib/Target/ARM/ARMSubtarget.h (diff)llvm.src/lib/Target/ARM/ARMSubtarget.h
The file was modified/llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp (diff)llvm.src/lib/Target/ARM/ARMTargetMachine.cpp
The file was modified/llvm/trunk/lib/Target/ARM/Thumb2SizeReduction.cpp (diff)llvm.src/lib/Target/ARM/Thumb2SizeReduction.cpp
Revision 353500 by sdmitriev:
[CodeExtractor] Update function's assumption cache after extracting blocks from it

Summary: Assumption cache's self-updating mechanism does not correctly handle the case when blocks are extracted from the function by the CodeExtractor. As a result function's assumption cache may have stale references to the llvm.assume calls that were moved to the outlined function. This patch fixes this problem by removing extracted llvm.assume calls from the function’s assumption cache.

Reviewers: hfinkel, vsk, fhahn, davidxl, sanjoy

Reviewed By: hfinkel, vsk

Subscribers: llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D57215
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Analysis/AssumptionCache.h (diff)llvm.src/include/llvm/Analysis/AssumptionCache.h
The file was modified/llvm/trunk/include/llvm/Transforms/Utils/CodeExtractor.h (diff)llvm.src/include/llvm/Transforms/Utils/CodeExtractor.h
The file was modified/llvm/trunk/lib/Analysis/AssumptionCache.cpp (diff)llvm.src/lib/Analysis/AssumptionCache.cpp
The file was modified/llvm/trunk/lib/Transforms/IPO/HotColdSplitting.cpp (diff)llvm.src/lib/Transforms/IPO/HotColdSplitting.cpp
The file was modified/llvm/trunk/lib/Transforms/IPO/LoopExtractor.cpp (diff)llvm.src/lib/Transforms/IPO/LoopExtractor.cpp
The file was modified/llvm/trunk/lib/Transforms/IPO/PartialInlining.cpp (diff)llvm.src/lib/Transforms/IPO/PartialInlining.cpp
The file was modified/llvm/trunk/lib/Transforms/Utils/CodeExtractor.cpp (diff)llvm.src/lib/Transforms/Utils/CodeExtractor.cpp
The file was added/llvm/trunk/test/Transforms/CodeExtractor/extract-assume.llllvm.src/test/Transforms/CodeExtractor/extract-assume.ll
Revision 353499 by aheejin:
[WebAssembly] Fix parseImmediate's memory alignment requirement

This fixes the current failure in the x86-64 ubsan bot caused by
r353496.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/WebAssembly/Disassembler/WebAssemblyDisassembler.cpp (diff)llvm.src/lib/Target/WebAssembly/Disassembler/WebAssemblyDisassembler.cpp
Revision 353498 by aditya_nandakumar:
[GISel]: While constructing the GISelWorklist make sure we reserve at least the required size to the underlying dense map.

https://reviews.llvm.org/D57931

This should save some unnecessary growing of the DenseMap.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/CodeGen/GlobalISel/GISelWorkList.h (diff)llvm.src/include/llvm/CodeGen/GlobalISel/GISelWorkList.h
Revision 353497 by arsenm:
AMDGPU/GlobalISel: Legalize addrspacecast

Use a placeholder constant for now on targets
that need the load from the queue ptr.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/GlobalISel/LegalizerHelper.cpp (diff)llvm.src/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp (diff)llvm.src/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPULegalizerInfo.h (diff)llvm.src/lib/Target/AMDGPU/AMDGPULegalizerInfo.h
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIISelLowering.cpp (diff)llvm.src/lib/Target/AMDGPU/SIISelLowering.cpp
The file was added/llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-addrspacecast.mirllvm.src/test/CodeGen/AMDGPU/GlobalISel/legalize-addrspacecast.mir
Revision 353496 by aardappel:
[WebAssembly] Fixed Disassembler ignoring endian swap on big endian.

Summary: This fixes: https://bugs.llvm.org/show_bug.cgi?id=40620

Reviewers: aheejin

Subscribers: dschuff, sbc100, jgravelle-google, sunfish, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D57933
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/WebAssembly/Disassembler/WebAssemblyDisassembler.cpp (diff)llvm.src/lib/Target/WebAssembly/Disassembler/WebAssemblyDisassembler.cpp
The file was modified/llvm/trunk/test/MC/Disassembler/WebAssembly/wasm.txt (diff)llvm.src/test/MC/Disassembler/WebAssembly/wasm.txt
Revision 353495 by jfb:
Variable auto-init: fix __block initialization

Summary:
Automatic initialization [1] of __block variables was trampling over the block's
headers after they'd been initialized, which caused self-init usage to crash,
such as here:

  typedef struct XYZ { void (^block)(); } *xyz_t;
  __attribute__((noinline))
  xyz_t create(void (^block)()) {
    xyz_t myself = malloc(sizeof(struct XYZ));
    myself->block = block;
    return myself;
  }
  int main() {
    __block xyz_t captured = create(^(){ (void)captured; });
  }

This type of code shouldn't be broken by variable auto-init, even if it's
sketchy.

[1] With -ftrivial-auto-var-init=pattern

<rdar://problem/47798396>

Reviewers: rjmccall, pcc, kcc

Subscribers: jkorous, dexonsmith, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D57797
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/CodeGen/CGDecl.cpp (diff)clang.src/lib/CodeGen/CGDecl.cpp
The file was modified/cfe/trunk/test/CodeGenCXX/trivial-auto-var-init.cpp (diff)clang.src/test/CodeGenCXX/trivial-auto-var-init.cpp
Revision 353494 by kcc:
[libFuzzer] refactor the way we choose the element to cross-over with, NFC (expected1); add a flag -seed_inputs= to pass extra seed inputs as file paths, not dirs
Change TypePath in RepositoryPath in Workspace
The file was modified/compiler-rt/trunk/lib/fuzzer/FuzzerDriver.cpp (diff)compiler-rt.src/lib/fuzzer/FuzzerDriver.cpp
The file was modified/compiler-rt/trunk/lib/fuzzer/FuzzerFlags.def (diff)compiler-rt.src/lib/fuzzer/FuzzerFlags.def
The file was modified/compiler-rt/trunk/lib/fuzzer/FuzzerInternal.h (diff)compiler-rt.src/lib/fuzzer/FuzzerInternal.h
The file was modified/compiler-rt/trunk/lib/fuzzer/FuzzerLoop.cpp (diff)compiler-rt.src/lib/fuzzer/FuzzerLoop.cpp
The file was modified/compiler-rt/trunk/lib/fuzzer/FuzzerMutate.cpp (diff)compiler-rt.src/lib/fuzzer/FuzzerMutate.cpp
The file was modified/compiler-rt/trunk/lib/fuzzer/FuzzerMutate.h (diff)compiler-rt.src/lib/fuzzer/FuzzerMutate.h
The file was modified/compiler-rt/trunk/test/fuzzer/cross_over.test (diff)compiler-rt.src/test/fuzzer/cross_over.test
Revision 353493 by efriedma:
[COFF, ARM64] Fix types for _ReadStatusReg, _WriteStatusReg

r344765 added those intrinsics, but used the wrong types.

Patch by Mike Hommey

Differential Revision: https://reviews.llvm.org/D57636
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/include/clang/Basic/BuiltinsAArch64.def (diff)clang.src/include/clang/Basic/BuiltinsAArch64.def
The file was modified/cfe/trunk/lib/CodeGen/CGBuiltin.cpp (diff)clang.src/lib/CodeGen/CGBuiltin.cpp
The file was modified/cfe/trunk/lib/Headers/intrin.h (diff)clang.src/lib/Headers/intrin.h
The file was modified/cfe/trunk/test/CodeGen/arm64-microsoft-status-reg.cpp (diff)clang.src/test/CodeGen/arm64-microsoft-status-reg.cpp
Revision 353492 by ctopper:
Fix the lowering issue of intrinsics llvm.localaddress on X86

Patch by Yuanke Luo

Reviewers: craig.topper, annita.zhang, smaslov, rnk, wxiao3

Reviewed By: rnk

Subscribers: efriedma, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D57501
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (diff)llvm.src/lib/Target/X86/X86ISelLowering.cpp
The file was modified/llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp (diff)llvm.src/lib/Target/X86/X86RegisterInfo.cpp
The file was modified/llvm/trunk/lib/Target/X86/X86RegisterInfo.h (diff)llvm.src/lib/Target/X86/X86RegisterInfo.h
The file was added/llvm/trunk/test/CodeGen/X86/seh-localaddress.llllvm.src/test/CodeGen/X86/seh-localaddress.ll
Revision 353491 by ctice:
lvm-dwarfdump: Stop counting out-of-line subprogram in the "inlined functions" statistic.

DW_TAG_subprogram DIEs should not be counted in the inlined function statistic. This also addresses the source variables count, as that uses the inlined function count in its calculations.

Differential revision: https://reviews.llvm.org/D57849
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/tools/llvm-dwarfdump/X86/statistics.ll (diff)llvm.src/test/tools/llvm-dwarfdump/X86/statistics.ll
The file was modified/llvm/trunk/test/tools/llvm-dwarfdump/X86/stats-inlining-multi-cu.ll (diff)llvm.src/test/tools/llvm-dwarfdump/X86/stats-inlining-multi-cu.ll
The file was modified/llvm/trunk/test/tools/llvm-dwarfdump/X86/stats-inlining-single-cu.ll (diff)llvm.src/test/tools/llvm-dwarfdump/X86/stats-inlining-single-cu.ll
The file was modified/llvm/trunk/tools/llvm-dwarfdump/Statistics.cpp (diff)llvm.src/tools/llvm-dwarfdump/Statistics.cpp
Revision 353490 by jfb:
[NFC] Variable auto-init: use getAsVariableArrayType helper

As suggested by @rjmccall in D57797.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/CodeGen/CGDecl.cpp (diff)clang.src/lib/CodeGen/CGDecl.cpp
Revision 353489 by ctopper:
[X86] Add FPCW as a register and start using it as an implicit use on floating point instructions.

Summary:
FPCW contains the rounding mode control which we manipulate to implement fp to integer conversion by changing the roudning mode, storing the value to the stack, and then changing the rounding mode back. Because we didn't model FPCW and its dependency chain, other instructions could be scheduled into the middle of the sequence.

This patch introduces the register and adds it as an implciit def of FLDCW and implicit use of the FP binary arithmetic instructions and store instructions. There are more instructions that need to be updated, but this is a good start. I believe this fixes at least the reduced test case from PR40529.

Reviewers: RKSimon, spatel, rnk, efriedma, andrew.w.kaylor

Subscribers: dim, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D57735
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86InstrFPStack.td (diff)llvm.src/lib/Target/X86/X86InstrFPStack.td
The file was modified/llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp (diff)llvm.src/lib/Target/X86/X86RegisterInfo.cpp
The file was modified/llvm/trunk/lib/Target/X86/X86RegisterInfo.td (diff)llvm.src/lib/Target/X86/X86RegisterInfo.td
The file was modified/llvm/trunk/test/CodeGen/MIR/X86/memory-operands.mir (diff)llvm.src/test/CodeGen/MIR/X86/memory-operands.mir
The file was modified/llvm/trunk/test/CodeGen/X86/ipra-reg-usage.ll (diff)llvm.src/test/CodeGen/X86/ipra-reg-usage.ll
The file was modified/llvm/trunk/test/CodeGen/X86/pr34080.ll (diff)llvm.src/test/CodeGen/X86/pr34080.ll
The file was modified/llvm/trunk/test/CodeGen/X86/pr40529.ll (diff)llvm.src/test/CodeGen/X86/pr40529.ll
Revision 353488 by kcc:
[libFuzzer] add a test for built-in CrossOver (there are unit tests for this, but it's worth having a full integration test like this)
Change TypePath in RepositoryPath in Workspace
The file was added/compiler-rt/trunk/test/fuzzer/CrossOverTest.cppcompiler-rt.src/test/fuzzer/CrossOverTest.cpp
The file was added/compiler-rt/trunk/test/fuzzer/cross_over.testcompiler-rt.src/test/fuzzer/cross_over.test