FailedChanges

Summary

  1. Fixing a test failure and refactoring the use of the update_svn_checkout function.
  2. Add new test case for addcarry. NFC.
  3. Avoid empty .eh_frame sections. Strip on OpenBSD does not correctly handle an empty .eh_frame section and produces broken binaries in that case. Currently lld creates such an empty .eh_frame section, despite the fact that the OpenBSD crtend.o explicitly inserts a terminator. The Linux LSB "standard": https://refspecs.linuxfoundation.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/ehframechpt.html#EHFRAME explicitly says that The .eh_frame section shall contain 1 or more Call Frame Information (CFI) records. This diff includes a test that specifically tests the issue I'm seeing on OpenBSD. Patch by Mark Kettenis!
  4. AMDGPU: Add AMDGPU_HS calling convention Reviewers: arsenm, nhaehnle Subscribers: mehdi_amini, kzhuravl, wdng, yaxunl, dstuttard, tpr, llvm-commits, t-tye Differential Revision: https://reviews.llvm.org/D32644
  5. [InstCombine] don't use DeMorgan's Law on integer constants (2nd try) This was originally checked in here: https://reviews.llvm.org/rL301923 And reverted here: https://reviews.llvm.org/rL301924 Because there's a clang test that would fail after this. I fixed/removed the offending CHECK lines in: https://reviews.llvm.org/rL301928 So let's try this again. Original commit message: This is the fold that causes the infinite loop in BoringSSL (https://github.com/google/boringssl/blob/master/crypto/cipher/e_rc2.c) when we fix instcombine demanded bits to prefer 'not' ops as in https://reviews.llvm.org/D32255. There are 2 or 3 problems with dyn_castNotVal, and I don't think we can reinstate https://reviews.llvm.org/D32255 until dyn_castNotVal is completely eliminated. 1. As shown here, it transforms 'not' into random xor. This transform is harmful to SCEV and codegen because 'not' can often be folded while random xor cannot. 2. It does not transform vector constants. This is actually a good thing, but if you don't believe the above argument, then we shouldn't have excluded vectors. 3. It tries to avoid transforming not(not(X)). That's nice, but it doesn't match the greedy nature of instcombine. If we DeMorganize a pattern that has an extra 'not' in it: ~(~(~X) & Y) --> (~X | ~Y) That's just another case of DeMorgan, so we should trust that we'll fold that pattern too: (~X | ~ Y) --> ~(X & Y) Differential Revision: https://reviews.llvm.org/D32665
  6. [CodeGen] remove/fix checks that will fail when r301923 is recommitted Don't test the optimizer as part of front-end verification.
Revision 301933 by sqlbyme:
Fixing a test failure and refactoring the use of the update_svn_checkout function.
Change TypePath in RepositoryPath in Workspace
The file was modified/zorg/trunk/zorg/jenkins/build.py (diff)llvm-revision.src/zorg/trunk/zorg/jenkins/build.py
Revision 301932 by deadalnix:
Add new test case for addcarry. NFC.
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/test/CodeGen/X86/addcarry.llllvm-revision.src/llvm/trunk/test/CodeGen/X86/addcarry.ll
The file was removed/llvm/trunk/test/CodeGen/X86/adde-carry.llllvm-revision.src/llvm/trunk/test/CodeGen/X86/adde-carry.ll
Revision 301931 by rafael:
Avoid empty .eh_frame sections.

Strip on OpenBSD does not correctly handle an empty .eh_frame section
and produces broken binaries in that case. Currently lld creates such
an empty .eh_frame section, despite the fact that the OpenBSD crtend.o
explicitly inserts a terminator. The Linux LSB "standard":

https://refspecs.linuxfoundation.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/ehframechpt.html#EHFRAME

explicitly says that

    The .eh_frame section shall contain 1 or more Call Frame Information (CFI) records.

This diff includes a test that specifically tests the issue I'm seeing
on OpenBSD.

Patch by Mark Kettenis!
Change TypePath in RepositoryPath in Workspace
The file was modified/lld/trunk/ELF/SyntheticSections.cpp (diff)llvm-revision.src/lld/trunk/ELF/SyntheticSections.cpp
The file was added/lld/trunk/test/ELF/Inputs/eh-frame-end.sllvm-revision.src/lld/trunk/test/ELF/Inputs/eh-frame-end.s
The file was added/lld/trunk/test/ELF/eh-frame-begin-end.sllvm-revision.src/lld/trunk/test/ELF/eh-frame-begin-end.s
Revision 301930 by mareko:
AMDGPU: Add AMDGPU_HS calling convention

Reviewers: arsenm, nhaehnle

Subscribers: mehdi_amini, kzhuravl, wdng, yaxunl, dstuttard, tpr, llvm-commits, t-tye

Differential Revision: https://reviews.llvm.org/D32644
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/IR/CallingConv.h (diff)llvm-revision.src/llvm/trunk/include/llvm/IR/CallingConv.h
The file was modified/llvm/trunk/lib/AsmParser/LLLexer.cpp (diff)llvm-revision.src/llvm/trunk/lib/AsmParser/LLLexer.cpp
The file was modified/llvm/trunk/lib/AsmParser/LLParser.cpp (diff)llvm-revision.src/llvm/trunk/lib/AsmParser/LLParser.cpp
The file was modified/llvm/trunk/lib/AsmParser/LLToken.h (diff)llvm-revision.src/llvm/trunk/lib/AsmParser/LLToken.h
The file was modified/llvm/trunk/lib/IR/AsmWriter.cpp (diff)llvm-revision.src/llvm/trunk/lib/IR/AsmWriter.cpp
The file was modified/llvm/trunk/lib/IR/Verifier.cpp (diff)llvm-revision.src/llvm/trunk/lib/IR/Verifier.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp (diff)llvm-revision.src/llvm/trunk/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPUISelLowering.cpp (diff)llvm-revision.src/llvm/trunk/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPUMachineFunction.cpp (diff)llvm-revision.src/llvm/trunk/lib/Target/AMDGPU/AMDGPUMachineFunction.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp (diff)llvm-revision.src/llvm/trunk/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp (diff)llvm-revision.src/llvm/trunk/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIDefines.h (diff)llvm-revision.src/llvm/trunk/lib/Target/AMDGPU/SIDefines.h
The file was modified/llvm/trunk/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp (diff)llvm-revision.src/llvm/trunk/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
The file was modified/llvm/trunk/test/Bitcode/compatibility.ll (diff)llvm-revision.src/llvm/trunk/test/Bitcode/compatibility.ll
Revision 301929 by spatel:
[InstCombine] don't use DeMorgan's Law on integer constants (2nd try)

This was originally checked in here:
https://reviews.llvm.org/rL301923

And reverted here:
https://reviews.llvm.org/rL301924

Because there's a clang test that would fail after this. I fixed/removed the
offending CHECK lines in:
https://reviews.llvm.org/rL301928

So let's try this again. Original commit message:

This is the fold that causes the infinite loop in BoringSSL
(https://github.com/google/boringssl/blob/master/crypto/cipher/e_rc2.c)
when we fix instcombine demanded bits to prefer 'not' ops as in https://reviews.llvm.org/D32255.

There are 2 or 3 problems with dyn_castNotVal, and I don't think we can
reinstate https://reviews.llvm.org/D32255 until dyn_castNotVal is completely eliminated.

1. As shown here, it transforms 'not' into random xor. This transform is harmful to SCEV and codegen because 'not' can often be folded while random xor cannot.
2. It does not transform vector constants. This is actually a good thing, but if you don't believe the above argument, then we shouldn't have excluded vectors.
3. It tries to avoid transforming not(not(X)). That's nice, but it doesn't match the greedy nature of instcombine. If we DeMorganize a pattern that has an extra 'not' in it: ~(~(~X) & Y) --> (~X | ~Y)

  That's just another case of DeMorgan, so we should trust that we'll fold that pattern too: (~X | ~ Y) --> ~(X & Y)

Differential Revision: https://reviews.llvm.org/D32665
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp (diff)llvm-revision.src/llvm/trunk/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
The file was modified/llvm/trunk/test/Transforms/InstCombine/assume2.ll (diff)llvm-revision.src/llvm/trunk/test/Transforms/InstCombine/assume2.ll
The file was modified/llvm/trunk/test/Transforms/InstCombine/demorgan.ll (diff)llvm-revision.src/llvm/trunk/test/Transforms/InstCombine/demorgan.ll
Revision 301928 by spatel:
[CodeGen] remove/fix checks that will fail when r301923 is recommitted

Don't test the optimizer as part of front-end verification.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/test/CodeGen/atomic-ops-libcall.c (diff)llvm-revision.src/cfe/trunk/test/CodeGen/atomic-ops-libcall.c