OSDN Git Service

android-x86/external-llvm.git
4 years agoandroid: [AMDGPU] update cpp sources
Mauro Rossi [Sun, 10 Feb 2019 17:33:56 +0000 (18:33 +0100)]
android: [AMDGPU] update cpp sources

Porting of the following commits:

b461f4d ("[AMDGPU] Add an AMDGPU specific atomic optimizer.")
92794ee ("[AMDGPU] Add a pass to promote bitcast calls")
322a807 ("[AMDGPU] Add FixupVectorISel pass, currently Supports SREGs in GLOBAL LD/ST")
d339265 ("[AMDGPU] Combine DPP mov with use instructions (VOP1/2/3)")
c9d081f ("[AMDGPU] Add new Mode Register pass")
1da08e2 ("[AMDGPU] Add support for TFE/LWE in image intrinsics. 2nd try")

4 years agoandroid: [X86] condition branches folding for three-way conditional codes
Mauro Rossi [Sun, 10 Feb 2019 16:45:17 +0000 (17:45 +0100)]
android: [X86] condition branches folding for three-way conditional codes

Porting of commit fa7848b1a02f2b36fc12786bbffd1c8a68866ca2
("[X86] condition branches folding for three-way conditional codes")

4 years agoandroid: additional build fixes
Mauro Rossi [Wed, 6 Feb 2019 22:48:16 +0000 (23:48 +0100)]
android: additional build fixes

4 years agoandroid: config.h: Add option to disable minidumps, default it to off
Mauro Rossi [Sun, 3 Feb 2019 08:16:44 +0000 (09:16 +0100)]
android: config.h: Add option to disable minidumps, default it to off

Porting of commit
7e4b0fae ("Add cmake option to disable minidumps, default it to off")

plus some other options that are to be set on (1) or off (0)

Fixes the following building error:

external/llvm80/lib/Support/Process.cpp:88:35:
error: use of undeclared identifier 'LLVM_ENABLE_CRASH_DUMPS'
static bool coreFilesPrevented = !LLVM_ENABLE_CRASH_DUMPS;
                                  ^
1 error generated.

4 years agoandroid: update version in {config,llvm-config}.h headers
Mauro Rossi [Sun, 3 Feb 2019 07:28:46 +0000 (08:28 +0100)]
android: update version in {config,llvm-config}.h headers

Version information is set to 8.0.0

4 years agoandroid: fix changed sources in makefiles
Mauro Rossi [Wed, 6 Feb 2019 20:55:53 +0000 (21:55 +0100)]
android: fix changed sources in makefiles

4 years agoandroid: [DWARF] Support for .debug_addr (consumer)
Mauro Rossi [Fri, 3 Aug 2018 11:16:19 +0000 (13:16 +0200)]
android: [DWARF] Support for .debug_addr (consumer)

Reference: 9a8677d ("[DWARF] Support for .debug_addr (consumer)")

4 years agoandroid: [AArch64][SVE] Asm: Add MOVPRFX instructions.
Mauro Rossi [Fri, 3 Aug 2018 07:09:24 +0000 (09:09 +0200)]
android: [AArch64][SVE] Asm: Add MOVPRFX instructions.

Fix of Attributes and Intrinsicts depedencies related to commit
c80d03aba54 ("[AArch64][SVE] Asm: Add MOVPRFX instructions.")

Corrects the following building errors:

host C++: libLLVM70AArch64AsmParser_32 <= external/llvm70/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
...
In file included from external/llvm70/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp:14:
In file included from external/llvm70/lib/Target/AArch64/AsmParser/../AArch64InstrInfo.h:18:
In file included from external/llvm70/lib/Target/AArch64/AsmParser/../AArch64RegisterInfo.h:18:
In file included from out/host/linux-x86/obj32/STATIC_LIBRARIES/libLLVM70AArch64AsmParser_intermediates/AArch64GenRegisterInfo.inc:4971:
In file included from external/llvm70/lib/Transforms/Hello/../../../include/llvm/CodeGen/TargetRegisterInfo.h:23:
In file included from external/llvm70/lib/Transforms/Hello/../../../include/llvm/CodeGen/MachineBasicBlock.h:22:
In file included from external/llvm70/lib/Transforms/Hello/../../../include/llvm/CodeGen/MachineInstr.h:23:
In file included from external/llvm70/lib/Transforms/Hello/../../../include/llvm/Analysis/AliasAnalysis.h:44:
In file included from external/llvm70/lib/Transforms/Hello/../../../include/llvm/Analysis/MemoryLocation.h:21:
In file included from external/llvm70/lib/Transforms/Hello/../../../include/llvm/IR/CallSite.h:32:
external/llvm70/lib/Transforms/Hello/../../../include/llvm/IR/Attributes.h:74:14: fatal error: 'llvm/IR/Attributes.inc' file not found
    #include "llvm/IR/Attributes.inc"
             ^~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.

host C++: libLLVM70AArch64AsmParser_32 <= ex...ernal/llvm70/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
...
In file included from external/llvm70/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp:14:
In file included from external/llvm70/lib/Target/AArch64/AsmParser/../AArch64InstrInfo.h:18:
In file included from external/llvm70/lib/Target/AArch64/AsmParser/../AArch64RegisterInfo.h:18:
In file included from out/host/linux-x86/obj32/STATIC_LIBRARIES/libLLVM70AArch64AsmParser_intermediates/AArch64GenRegisterInfo.inc:4971:
In file included from external/llvm70/lib/Transforms/Hello/../../../include/llvm/CodeGen/TargetRegisterInfo.h:23:
In file included from external/llvm70/lib/Transforms/Hello/../../../include/llvm/CodeGen/MachineBasicBlock.h:22:
In file included from external/llvm70/lib/Transforms/Hello/../../../include/llvm/CodeGen/MachineInstr.h:23:
In file included from external/llvm70/lib/Transforms/Hello/../../../include/llvm/Analysis/AliasAnalysis.h:44:
In file included from external/llvm70/lib/Transforms/Hello/../../../include/llvm/Analysis/MemoryLocation.h:21:
In file included from external/llvm70/lib/Transforms/Hello/../../../include/llvm/IR/CallSite.h:32:
external/llvm70/lib/Transforms/Hello/../../../include/llvm/IR/Attributes.h:74:14: fatal error: 'llvm/IR/Attributes.inc' file not found
    #include "llvm/IR/Attributes.inc"
             ^~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.

4 years agoandroid: [DWARF v5] Refactor range lists dumping...
Mauro Rossi [Thu, 26 Jul 2018 01:03:17 +0000 (03:03 +0200)]
android: [DWARF v5] Refactor range lists dumping...

Reference:
3e597f4 ("[DWARF v5] Refactor range lists dumping...")

4 years agoandroid: [ARM] ARMCodeGenPrepare backend pass
Mauro Rossi [Mon, 23 Jul 2018 21:58:17 +0000 (23:58 +0200)]
android: [ARM] ARMCodeGenPrepare backend pass

Reference: 942fbb2 ("[ARM] ARMCodeGenPrepare backend pass")

4 years agoandroid: [SLH] Introduce a new pass to do Speculative Load Hardening to mitigate
Mauro Rossi [Sat, 14 Jul 2018 09:48:03 +0000 (11:48 +0200)]
android: [SLH] Introduce a new pass to do Speculative Load Hardening to mitigate

Reference:
bd8c8d7 ("[SLH] Introduce a new pass to do Speculative Load Hardening to mitigate")

4 years agoandroid: Lift JSON library from clang-tools-extra/clangd to llvm/Support.
Mauro Rossi [Sat, 14 Jul 2018 09:27:03 +0000 (11:27 +0200)]
android: Lift JSON library from clang-tools-extra/clangd to llvm/Support.

Reference:
5070d36 ("Lift JSON library from clang-tools-extra/clangd to llvm/Support.")

4 years agoandroid: [TableGen] Add a general-purpose JSON backend.
Mauro Rossi [Sat, 14 Jul 2018 09:12:53 +0000 (11:12 +0200)]
android: [TableGen] Add a general-purpose JSON backend.

Reference: 9cfd4e5 ("[TableGen] Add a general-purpose JSON backend.")

4 years agoandroid: [Dominators] Add the DomTreeUpdater class
Mauro Rossi [Wed, 11 Jul 2018 07:06:46 +0000 (09:06 +0200)]
android: [Dominators] Add the DomTreeUpdater class

Reference:
bf4ec2b ("[Dominators] Add the DomTreeUpdater class")
57fa5c9 (Reappl "[Dominators] Add the DomTreeUpdater class")

4 years agoandroid: [AMDGPU] Fix layering issue with AMDGPUHSAMetadataStreamer (NFC)
Mauro Rossi [Wed, 11 Jul 2018 06:27:53 +0000 (08:27 +0200)]
android: [AMDGPU] Fix layering issue with AMDGPUHSAMetadataStreamer (NFC)

Fixes: 47362da ("[AMDGPU] Fix layering issue with AMDGPUHSAMetadataStreamer (NFC)")

4 years agoDO NOT MERGE: all-in-one build fixes
Mauro Rossi [Fri, 6 Jul 2018 00:03:23 +0000 (02:03 +0200)]
DO NOT MERGE: all-in-one build fixes

4 years agoDO NOT MERGE: tweaks to build oreo-x86
Mauro Rossi [Wed, 3 Jan 2018 22:54:02 +0000 (23:54 +0100)]
DO NOT MERGE: tweaks to build oreo-x86

Needed to avoid following Android build system errors:

external/llvm70/shared_llvm.mk: error: libLLVM70 (SHARED_LIBRARIES windows-x86) missing libLLVM70GlobalISel (STATIC_LIBRARIES windows-x86)
Available variants:
  libLLVM70GlobalISel (STATIC_LIBRARIES linux-x86_64)
  libLLVM70GlobalISel (STATIC_LIBRARIES linux-x86)
...
external/llvm70/shared_llvm.mk: error: libLLVM70 (SHARED_LIBRARIES windows-x86_64) missing libLLVM70GlobalISel (STATIC_LIBRARIES windows-x86_64)
Available variants:
  libLLVM50GlobalISel (STATIC_LIBRARIES linux-x86_64)
  libLLVM50GlobalISel (STATIC_LIBRARIES linux-x86)

4 years agoandroid: fix Mips target build
Mauro Rossi [Sun, 10 Jun 2018 20:38:51 +0000 (22:38 +0200)]
android: fix Mips target build

Source files and tblgen targets are updated for Mips target

4 years agoandroid: Target/Mips: fix Intrinsics dependencies
Mauro Rossi [Sun, 10 Jun 2018 20:38:51 +0000 (22:38 +0200)]
android: Target/Mips: fix Intrinsics dependencies

Needed to avoid following building errors:

In file included from external/llvm/lib/Target/Mips/InstPrinter/MipsInstPrinter.cpp:16:
In file included from external/llvm/lib/Target/Mips/InstPrinter/../MipsInstrInfo.h:23:
In file included from external/llvm/lib/Target/Mips/InstPrinter/../MipsRegisterInfo.h:18:
In file included from external/llvm/lib/Transforms/Hello/../../../include/llvm/CodeGen/MachineBasicBlock.h:22:
In file included from external/llvm/lib/Transforms/Hello/../../../include/llvm/CodeGen/MachineInstr.h:24:
In file included from external/llvm/lib/Transforms/Hello/../../../include/llvm/CodeGen/MachineOperand.h:18:
external/llvm/lib/Transforms/Hello/../../../include/llvm/IR/Intrinsics.h:42:10: fatal error: 'llvm/IR/Intrinsics.inc' file not found
#include "llvm/IR/Intrinsics.inc"
         ^~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.

In file included from external/llvm/lib/Target/Mips/TargetInfo/MipsTargetInfo.cpp:11:
In file included from external/llvm/lib/Transforms/Hello/../../../include/llvm/IR/Module.h:26:
In file included from external/llvm/lib/Transforms/Hello/../../../include/llvm/IR/Function.h:33:
external/llvm/lib/Transforms/Hello/../../../include/llvm/IR/Intrinsics.h:42:10: fatal error: 'llvm/IR/Intrinsics.gen' file not found
         ^~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.

4 years agoandroid: Rename {Attributes,Intrinsics}.gen to {Attributes,Intrinsics}.inc
Mauro Rossi [Sat, 9 Jun 2018 15:27:33 +0000 (17:27 +0200)]
android: Rename {Attributes,Intrinsics}.gen to {Attributes,Intrinsics}.inc

Fix the following building errors:

In file included from external/llvm/lib/Linker/LinkModules.cpp:21:
In file included from external/llvm/include/llvm/IR/Module.h:23:
external/llvm/include/llvm/IR/Attributes.h:74:14: fatal error: 'llvm/IR/Attributes.inc' file not found
    #include "llvm/IR/Attributes.inc"
             ^~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
...
In file included from external/llvm/lib/Linker/IRMover.cpp:19:
external/llvm/include/llvm/IR/Intrinsics.h:42:10: fatal error: 'llvm/IR/Intrinsics.inc' file not found
         ^~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.

Reference:
ea0775ec4a ("Rename Attributes.gen, Intrinsics.gen to Attributes.inc, Intrinsics.inc")

4 years agoandroid: utils/Tablegen: update sources list
Mauro Rossi [Sat, 9 Jun 2018 15:01:46 +0000 (17:01 +0200)]
android: utils/Tablegen: update sources list

Fixes  building errors:

external/llvm/utils/TableGen/DisassemblerEmitter.cpp:133: error: undefined reference to 'llvm::emitWebAssemblyDisassemblerTables(llvm::raw_ostream&, llvm::ArrayRef<llvm::CodeGenInstruction const*> const&)'

external/llvm/utils/TableGen/InstrInfoEmitter.cpp:417: error: undefined reference to 'llvm::PredicateExpander::expandPredicate(llvm::formatted_raw_ostream&, llvm::Record const*)'
external/llvm/utils/TableGen/InstrInfoEmitter.cpp:393: error: undefined reference to 'llvm::PredicateExpander::expandPredicate(llvm::formatted_raw_ostream&, llvm::Record const*)'
external/llvm/utils/TableGen/SubtargetEmitter.cpp:1486: error: undefined reference to 'llvm::PredicateExpander::expandPredicate(llvm::formatted_raw_ostream&, llvm::Record const*)'

external/llvm/utils/TableGen/TableGen.cpp:151: error: undefined reference to 'llvm::EmitCompressInst(llvm::RecordKeeper&, llvm::raw_ostream&)'
clang.real: error: linker command failed with exit code 1 (use -v to see invocation)
[  8% 764/8646] host C++: libLLVMRuntimeDyld <= external/llvm/lib/ExecutionEngine/RuntimeDyld/RTDyldMemoryManager.cpp
ninja: build stopped: subcommand failed.
14:46:19 ninja failed with: exit status 1

Reference commits:
839cd7ff05 ("[RISCV] Tablegen-driven Instruction Compression.")
04cf0d7c9c ("[WebAssembly] Initial Disassembler.")
e68d92b387 ("[RFC][Patch 1/3] Add a new class of predicates for variant scheduling classes.")

4 years agoandroid: Transforms/Vectorize: update sources list
Mauro Rossi [Sat, 9 Jun 2018 19:04:26 +0000 (21:04 +0200)]
android: Transforms/Vectorize: update sources list

4 years agoandroid: Transforms/Utils: update sources list
Mauro Rossi [Sat, 9 Jun 2018 19:04:26 +0000 (21:04 +0200)]
android: Transforms/Utils: update sources list

4 years agoandroid: Transforms/IPO: update sources list
Mauro Rossi [Sat, 9 Jun 2018 19:04:26 +0000 (21:04 +0200)]
android: Transforms/IPO: update sources list

4 years agoandroid: Trasform/AggressiveInstCombine: build as static library
Mauro Rossi [Sat, 9 Jun 2018 19:34:47 +0000 (21:34 +0200)]
android: Trasform/AggressiveInstCombine: build as static library

Android makefile is added to build libLLVMAggressiveInstCombine static library
and static dependency is added in shared_llvm.mk

4 years agoandroid: ExecutionEngine/Orc: update sources list
Mauro Rossi [Sat, 9 Jun 2018 19:04:26 +0000 (21:04 +0200)]
android: ExecutionEngine/Orc: update sources list

4 years agoandroid: Demangle: add libLLVMDemangle static dependency
Mauro Rossi [Sat, 9 Jun 2018 20:07:36 +0000 (22:07 +0200)]
android: Demangle: add libLLVMDemangle static dependency

4 years agoandroid: DebugInfo/DWARF: update sources list
Mauro Rossi [Sat, 9 Jun 2018 19:04:26 +0000 (21:04 +0200)]
android: DebugInfo/DWARF: update sources list

4 years agoandroid: BinaryFormat: update sources list
Mauro Rossi [Sat, 9 Jun 2018 19:04:26 +0000 (21:04 +0200)]
android: BinaryFormat: update sources list

4 years agoandroid: Analysis: update sources list
Mauro Rossi [Sat, 9 Jun 2018 19:04:26 +0000 (21:04 +0200)]
android: Analysis: update sources list

4 years agoandroid: Support: update sources list
Mauro Rossi [Sun, 10 Jun 2018 18:35:33 +0000 (20:35 +0200)]
android: Support: update sources list

Source files updated for Support target

4 years agoandroid: [Support] Move syntax highlighting into support
Mauro Rossi [Sat, 9 Jun 2018 10:58:01 +0000 (12:58 +0200)]
android: [Support] Move syntax highlighting into support

Apply changes also in Android targets

Fixes the following building error:

ninja: error: 'external/llvm/lib/DebugInfo/DWARF/SyntaxHighlighting.cpp',
needed by 'out/target/product/x86/obj/STATIC_LIBRARIES/libLLVMDebugInfoDWARF_intermediates/SyntaxHighlighting.o',
missing and no known rule to make it
12:05:41 ninja failed with: exit status 1

Reference: 01d72e5767 ("[Support] Move syntax highlighting into support")

4 years agoandroid: CodeGen: update sources list
Mauro Rossi [Sat, 9 Jun 2018 19:04:26 +0000 (21:04 +0200)]
android: CodeGen: update sources list

4 years agoandroid: [IR][CodeGen] Move EVT to CodeGen layer.
Mauro Rossi [Sat, 9 Jun 2018 12:43:57 +0000 (14:43 +0200)]
android: [IR][CodeGen] Move EVT to CodeGen layer.

Apply the change in Android target

Fixes following building error:

ninja: error: 'external/llvm/lib/IR/ValueTypes.cpp',
needed by 'out/target/product/x86/obj/STATIC_LIBRARIES/libLLVMCore_intermediates/ValueTypes.o',
missing and no known rule to make it
14:32:04 ninja failed with: exit status 1

Reference: f137ed238d ("[IR][CodeGen] Remove dependency on EVT from IR/Function.cpp.
 Move EVT to CodeGen layer.")

4 years agoandroid: Codegen: Rename ExecutionDepsFix files to ExecutionDomainFix
Mauro Rossi [Sat, 9 Jun 2018 12:32:34 +0000 (14:32 +0200)]
android: Codegen: Rename ExecutionDepsFix files to ExecutionDomainFix

Rename the source file in Android target

Fixes following building error:

ninja: error: 'external/llvm/lib/CodeGen/ExecutionDepsFix.cpp',
needed by 'out/target/product/x86/obj/STATIC_LIBRARIES/libLLVMCodeGen_intermediates/ExecutionDepsFix.o',
missing and no known rule to make it
13:15:38 ninja failed with: exit status 1

Reference: d6bf9cdf27 ("Rename ExecutionDepsFix files to ExecutionDomainFix")

4 years agoandroid: Codegen/AsmPrinter: Rename DwarfAccelTable to AccelTable
Mauro Rossi [Sat, 9 Jun 2018 11:13:30 +0000 (13:13 +0200)]
android: Codegen/AsmPrinter: Rename DwarfAccelTable to AccelTable

Apply changes also in Android targets

Fixes the following building error:

ninja: error: 'external/llvm/lib/CodeGen/AsmPrinter/DwarfAccelTable.cpp',
needed by 'out/target/product/x86/obj/STATIC_LIBRARIES/libLLVMAsmPrinter_intermediates/DwarfAccelTable.o',
missing and no known rule to make it
12:13:33 ninja failed with: exit status 1

Reference: 633599ba03 ("[NFC] Rename DwarfAccelTable and move header.")

4 years agoandroid: fix AMDGPU target build
Mauro Rossi [Sun, 10 Jun 2018 18:17:20 +0000 (20:17 +0200)]
android: fix AMDGPU target build

Source files and tblgen targets are updated for AMDGPU target

4 years agoandroid: [AMDGPU][Waitcnt] Remove the old waitcnt pass
Mauro Rossi [Sat, 9 Jun 2018 10:00:37 +0000 (12:00 +0200)]
android: [AMDGPU][Waitcnt] Remove the old waitcnt pass

Remove source also in Android AMDGPU target

Fixes the following building error:

ninja: error: 'external/llvm/lib/Target/AMDGPU/SIInsertWaits.cpp',
needed by 'out/target/product/x86/obj/STATIC_LIBRARIES/libLLVMAMDGPUCodeGen_intermediates/SIInsertWaits.o',
missing and no known rule to make it
11:44:43 ninja failed with: exit status 1

Reference: ac95aa536 ("[AMDGPU][Waitcnt] Remove the old waitcnt pass")

4 years agoandroid: AMDGPU: Rename OpenCL lowering pass to be R600 specific.
Mauro Rossi [Sat, 9 Jun 2018 09:46:59 +0000 (11:46 +0200)]
android: AMDGPU: Rename OpenCL lowering pass to be R600 specific.

Rename the source file in Android AMDGPU target

Fixes following building error:

ninja: error: 'external/llvm/lib/Target/AMDGPU/AMDGPUOpenCLImageTypeLoweringPass.cpp',
needed by 'out/target/product/x86/obj/STATIC_LIBRARIES/libLLVMAMDGPUCodeGen_intermediates/AMDGPUOpenCLImageTypeLoweringPass.o',
missing and no known rule to make it
11:26:11 ninja failed with: exit status 1

Reference: 0d44e5b362 ("AMDGPU: Rename OpenCL lowering pass to be R600 specific.")

4 years agoandroid: add tblgen rules for searchable-tables targets
Mauro Rossi [Sat, 9 Jun 2018 16:42:18 +0000 (18:42 +0200)]
android: add tblgen rules for searchable-tables targets

Required for AMDGPUGenSearchableTables.inc target

4 years agoandroid: Target/X86: update sources list
Mauro Rossi [Sat, 9 Jun 2018 19:04:26 +0000 (21:04 +0200)]
android: Target/X86: update sources list

4 years agoandroid: fix Target/ARM build
Mauro Rossi [Fri, 19 Jan 2018 13:10:18 +0000 (14:10 +0100)]
android: fix Target/ARM build

Changelog:

updated list of *.cpp sources in ARM Android.mk makefiles
added lib/Target/ARM/Utils/Android.mk to build libLLVMARMUtils module
shared_llvm.mk: added libLLVMARMUtils to arm static libraries
main Android.mk: lib/Target/ARM/Utils path added
llvm-tblgen-rules.mk: new rule for ARMGenSystemRegister.inc aligned to AMR Cmakelist.txt
ARM modules Android.mk: added ARMGenSystemRegister.inc generated file where necessary
ARM modules Android.mk: added *GEN_ATTRIBUTES_MK, *GEN_INTRINSICS_MK rules where necessary

4 years agoandroid: Target/X86/InstPrinter: fix {Attributes,Intrinsics}.gen dependencies
Mauro Rossi [Sat, 20 Jan 2018 19:57:19 +0000 (20:57 +0100)]
android: Target/X86/InstPrinter: fix {Attributes,Intrinsics}.gen dependencies

Makefile rules are aligned to X86/AsmParser ones

Fixes the following building errors:

host C++: libLLVM70X86AsmPrinter_32 <= external/llvm70/lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp
...
In file included from external/llvm70/lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp:17:
In file included from external/llvm70/lib/Target/X86/InstPrinter/X86InstComments.h:18:
In file included from external/llvm70/lib/Transforms/Hello/../../../include/llvm/CodeGen/MachineInstr.h:23:
In file included from external/llvm70/lib/Transforms/Hello/../../../include/llvm/Analysis/AliasAnalysis.h:44:
In file included from external/llvm70/lib/Transforms/Hello/../../../include/llvm/Analysis/MemoryLocation.h:21:
In file included from external/llvm70/lib/Transforms/Hello/../../../include/llvm/IR/CallSite.h:32:
external/llvm70/lib/Transforms/Hello/../../../include/llvm/IR/Attributes.h:74:14: fatal error: 'llvm/IR/Attributes.gen' file not found
    #include "llvm/IR/Attributes.gen"
             ^~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.

target  C++: libLLVM70X86AsmPrinter_32 <= external/llvm70/lib/Target/X86/InstPrinter/X86InstComments.cpp
...
In file included from external/llvm70/lib/Target/X86/InstPrinter/X86InstComments.cpp:15:
In file included from external/llvm70/lib/Target/X86/InstPrinter/X86InstComments.h:18:
In file included from external/llvm70/lib/Transforms/Hello/../../../include/llvm/CodeGen/MachineInstr.h:23:
In file included from external/llvm70/lib/Transforms/Hello/../../../include/llvm/Analysis/AliasAnalysis.h:44:
In file included from external/llvm70/lib/Transforms/Hello/../../../include/llvm/Analysis/MemoryLocation.h:21:
In file included from external/llvm70/lib/Transforms/Hello/../../../include/llvm/IR/CallSite.h:32:
external/llvm70/lib/Transforms/Hello/../../../include/llvm/IR/Attributes.h:74:14: fatal error: 'llvm/IR/Attributes.gen' file not found
    #include "llvm/IR/Attributes.gen"
             ^
1 error generated.

4 years agoandroid: add support for "retpoline" x86 mitigation
Mauro Rossi [Sat, 3 Feb 2018 18:43:17 +0000 (19:43 +0100)]
android: add support for "retpoline" x86 mitigation

Builds the new sources added by commit e307072 ("Merging r323155:")

4 years agoandroid: update sources file names for llvm70
Mauro Rossi [Fri, 19 Jan 2018 17:44:18 +0000 (18:44 +0100)]
android: update sources file names for llvm70

*SRC_FILES lists are aligned as per Cmakelist.txt files,
to avoid building errors due to changes in codebase

e.g. AMDGPUCodeObjectMetadata.cpp => AMDGPUMetadata.cpp

ninja: error: 'external/llvm70/lib/Support/AMDGPUCodeObjectMetadata.cpp',
needed by 'out/host/linux-x86/obj/STATIC_LIBRARIES/libLLVM70Support_intermediates/AMDGPUCodeObjectMetadata.o',
missing and no known rule to make it

or new missing sources:

external/llvm70/utils/TableGen/CodeGenDAGPatterns.cpp:88: error: undefined reference to 'llvm::ValueTypeByHwMode:

4 years agofor new mesa build (LLVM70)
Qiang Yu [Thu, 17 Aug 2017 01:45:47 +0000 (09:45 +0800)]
for new mesa build (LLVM70)

Change-Id: I6008945796c2fdd0bcfe4a21b171d962be593646

4 years agofor sync with upstream update
Qiang Yu [Fri, 11 Aug 2017 02:58:55 +0000 (10:58 +0800)]
for sync with upstream update

Change-Id: Ifa8ab4651323b78ba69ac46c421f3d6ad2cf7a50

4 years agoCLEAR_TBLGEN_VARS to CLEAR_TBLGEN_VARS70
Qiang Yu [Tue, 1 Aug 2017 07:39:40 +0000 (15:39 +0800)]
CLEAR_TBLGEN_VARS to CLEAR_TBLGEN_VARS70

find . -type f -name "*.mk" -exec sed -i 's/CLEAR_TBLGEN_VARS/CLEAR_TBLGEN_VARS70/g' {} +

Change-Id: I49cea6080f2c69f241d1a28f55f342aa95f62c7b

4 years agoTBLGEN_TD_DIR to TBLGEN_TD_DIR70
Qiang Yu [Tue, 1 Aug 2017 07:38:22 +0000 (15:38 +0800)]
TBLGEN_TD_DIR to TBLGEN_TD_DIR70

find . -type f -name "*.mk" -exec sed -i 's/TBLGEN_TD_DIR/TBLGEN_TD_DIR70/g' {} +

Change-Id: I6ea2fb993626240761432fb3db38caead251e78a

4 years agoINTRINSICTD to INTRINSICTD70
Qiang Yu [Tue, 1 Aug 2017 07:37:29 +0000 (15:37 +0800)]
INTRINSICTD to INTRINSICTD70

find . -type f -name "*.mk" -exec sed -i 's/INTRINSICTD/INTRINSICTD70/g' {} +

Change-Id: I042b6a3526260d3d811b4cbba1751e73ffdd0fd6

4 years agoATTRIBUTETD to ATTRIBUTETD70
Qiang Yu [Tue, 1 Aug 2017 07:36:24 +0000 (15:36 +0800)]
ATTRIBUTETD to ATTRIBUTETD70

find . -type f -name "*.mk" -exec sed -i 's/ATTRIBUTETD/ATTRIBUTETD70/g' {} +

Change-Id: I03509f4ce804035e3a12a9a36d8158fb2052027d

4 years agoTBLGEN_TABLES to TBLGEN_TABLES70
Qiang Yu [Tue, 1 Aug 2017 07:35:30 +0000 (15:35 +0800)]
TBLGEN_TABLES to TBLGEN_TABLES70

find . -type f -name "*.mk" -exec sed -i 's/TBLGEN_TABLES/TBLGEN_TABLES70/g' {} +

Change-Id: I4a1d920b0371b659637f08cc7426a5c7b6f47bdc

4 years agotransform-td-to-out to transform-td-to-out70
Qiang Yu [Tue, 1 Aug 2017 07:33:46 +0000 (15:33 +0800)]
transform-td-to-out to transform-td-to-out70

find . -type f -name "*.mk" -exec sed -i 's/transform-td-to-out/transform-td-to-out70/g' {} +

Change-Id: I0f068d1e05366de42771cf273ebdb5c8fcc18cf9

4 years agotransform-host-td-to-out to transform-host-td-to-out70
Qiang Yu [Tue, 1 Aug 2017 07:32:52 +0000 (15:32 +0800)]
transform-host-td-to-out to transform-host-td-to-out70

find . -type f -name "*.mk" -exec sed -i 's/transform-host-td-to-out/transform-host-td-to-out70/g' {} +

Change-Id: I9e7c253ab9c25b8b74538b7e5eda84fd024ca4d9

4 years agotransform-device-td-to-out to transform-device-td-to-out70
Qiang Yu [Tue, 1 Aug 2017 07:30:20 +0000 (15:30 +0800)]
transform-device-td-to-out to transform-device-td-to-out70

find . -type f -name "*.mk" -exec sed -i 's/transform-device-td-to-out/transform-device-td-to-out70/g' {} +

Change-Id: I973ec407d87d5972abe72aa39e75db4846adabd2

4 years agoLLVM_SUPPORTED_ARCH to LLVM70_SUPPORTED_ARCH
Qiang Yu [Tue, 1 Aug 2017 07:19:53 +0000 (15:19 +0800)]
LLVM_SUPPORTED_ARCH to LLVM70_SUPPORTED_ARCH

find . -type f -name "*.mk" -exec sed -i 's/LLVM_SUPPORTED_ARCH/LLVM70_SUPPORTED_ARCH/g' {} +

Change-Id: I239a21f1e350a8ddb0e8c122ea35d2a91c28cb71

4 years agoLLVM_GEN_ to LLVM70_GEN_
Qiang Yu [Tue, 1 Aug 2017 07:16:51 +0000 (15:16 +0800)]
LLVM_GEN_ to LLVM70_GEN_

find . -type f -name "*.mk" -exec sed -i 's/LLVM_GEN_/LLVM70_GEN_/g' {} +

Change-Id: Ia0680db15a1318cac2750a09c07b1c8c8870cb5c

4 years agoLLVM_DEVICE_BUILD_MK to LLVM70_DEVICE_BUILD_MK
Qiang Yu [Tue, 1 Aug 2017 07:01:50 +0000 (15:01 +0800)]
LLVM_DEVICE_BUILD_MK to LLVM70_DEVICE_BUILD_MK

find . -type f -name "*.mk" -exec sed -i 's/LLVM_DEVICE_BUILD_MK/LLVM70_DEVICE_BUILD_MK/g' {} +

Change-Id: If859305d7d6220a8a7cf49a515f09a008162c091

4 years agoLLVM_HOST_BUILD_MK to LLVM70_HOST_BUILD_MK
Qiang Yu [Tue, 1 Aug 2017 07:00:40 +0000 (15:00 +0800)]
LLVM_HOST_BUILD_MK to LLVM70_HOST_BUILD_MK

find . -type f -name "*.mk" -exec sed -i 's/LLVM_HOST_BUILD_MK/LLVM70_HOST_BUILD_MK/g' {} +

Change-Id: Ifb3c227afbc06823fe3275c88a0af8b754ce5cfb

4 years agoLLVM_TBLGEN to LLVM70_TBLGEN
Qiang Yu [Tue, 1 Aug 2017 06:57:55 +0000 (14:57 +0800)]
LLVM_TBLGEN to LLVM70_TBLGEN

find . -type f -name "*.mk" -exec sed -i 's/LLVM_TBLGEN/LLVM70_TBLGEN/g' {} +

Change-Id: Ida23ea5bafd566034ad172dc84d4a53fe399f914

4 years agoLLVM_ROOT_PATH to LLVM70_ROOT_PATH
Qiang Yu [Tue, 1 Aug 2017 06:55:37 +0000 (14:55 +0800)]
LLVM_ROOT_PATH to LLVM70_ROOT_PATH

find . -type f -name "*.mk" -exec sed -i 's/LLVM_ROOT_PATH/LLVM70_ROOT_PATH/g' {} +

Change-Id: Ie102b63dbd4200d923a398d57d05f6e56b1e970b

4 years agomore llvm to llvm70
Qiang Yu [Tue, 1 Aug 2017 06:27:55 +0000 (14:27 +0800)]
more llvm to llvm70

Change-Id: I15d009a0b5e2714b9da5acbf224c90777e79a96e

4 years agoremove un-needed utils
Qiang Yu [Tue, 1 Aug 2017 06:06:50 +0000 (14:06 +0800)]
remove un-needed utils

Change-Id: Icf27befffad1a982c5199b0a5a6ed4914871710e

4 years agodon't build tools
Qiang Yu [Tue, 1 Aug 2017 06:05:31 +0000 (14:05 +0800)]
don't build tools

Change-Id: I0bffab8e880a9eb07778e666a89782453777ab71

4 years agorename LLVMxxx to LLVM70xxx
Qiang Yu [Tue, 1 Aug 2017 06:03:07 +0000 (14:03 +0800)]
rename LLVMxxx to LLVM70xxx

Change-Id: I6e1a5a5e50a5c06d12fff20ee889b2c9b1d8ab3f

4 years agorename libLLVM to libLLVM70
Qiang Yu [Tue, 1 Aug 2017 05:57:12 +0000 (13:57 +0800)]
rename libLLVM to libLLVM70

find . -type f -name "*.mk" -exec sed -i 's/libLLVM/libLLVM70/g' {} +

Change-Id: I7868e2f0d559077d04233164c378f5ad4de089ac

4 years agoenable GlobalISel
Qiang Yu [Sun, 16 Jul 2017 15:52:25 +0000 (23:52 +0800)]
enable GlobalISel

Change-Id: I54623fef9a8f523db2827c4371c93ce42354e790

4 years agonow mesa can be compiled
Qiang Yu [Fri, 14 Jul 2017 10:08:17 +0000 (18:08 +0800)]
now mesa can be compiled

Change-Id: I7ebd71ab29384a5850bcc8227e007704d24fb057

4 years agoupdate config
Qiang Yu [Fri, 14 Jul 2017 00:33:14 +0000 (08:33 +0800)]
update config

Change-Id: Id0c53452b223ebeeed6dded8f47f19d71f4a2310

4 years agoadd device include config
Qiang Yu [Thu, 13 Jul 2017 14:43:17 +0000 (22:43 +0800)]
add device include config

Change-Id: If52fde7458825a853cafef004649339da1b87236

4 years agomove all mk file
Qiang Yu [Thu, 13 Jul 2017 13:51:59 +0000 (21:51 +0800)]
move all mk file

Change-Id: If2445f05934836410b1f1bbdc9da22b0a193d646

4 years agoMerging r372020 and r372182:
Tom Stellard [Tue, 15 Oct 2019 03:50:26 +0000 (03:50 +0000)]
Merging r372020 and r372182:

------------------------------------------------------------------------
r372020 | rnk | 2019-09-16 11:49:09 -0700 (Mon, 16 Sep 2019) | 30 lines

[PGO] Use linkonce_odr linkage for __profd_ variables in comdat groups

This fixes relocations against __profd_ symbols in discarded sections,
which is PR41380.

In general, instrumentation happens very early, and optimization and
inlining happens afterwards. The counters for a function are calculated
early, and after inlining, counters for an inlined function may be
widely referenced by other functions.

For C++ inline functions of all kinds (linkonce_odr &
available_externally mainly), instr profiling wants to deduplicate these
__profc_ and __profd_ globals. Otherwise the binary would be quite
large.

I made __profd_ and __profc_ comdat in r355044, but I chose to make
__profd_ internal. At the time, I was only dealing with coverage, and in
that case, none of the instrumentation needs to reference __profd_.
However, if you use PGO, then instrumentation passes add calls to
__llvm_profile_instrument_range which reference __profd_ globals. The
solution is to make these globals externally visible by using
linkonce_odr linkage for data as was done for counters.

This is safe because PGO adds a CFG hash to the names of the data and
counter globals, so if different TUs have different globals, they will
get different data and counter arrays.

Reviewers: xur, hans

Differential Revision: https://reviews.llvm.org/D67579
------------------------------------------------------------------------

------------------------------------------------------------------------
r372182 | rnk | 2019-09-17 14:10:49 -0700 (Tue, 17 Sep 2019) | 12 lines

[PGO] Don't use comdat groups for counters & data on COFF

For COFF, a comdat group is really a symbol marked
IMAGE_COMDAT_SELECT_ANY and zero or more other symbols marked
IMAGE_COMDAT_SELECT_ASSOCIATIVE. Typically the associative symbols in
the group are not external and are not referenced by other TUs, they are
things like debug info, C++ dynamic initializers, or other section
registration schemes. The Visual C++ linker reports a duplicate symbol
error for symbols marked IMAGE_COMDAT_SELECT_ASSOCIATIVE even if they
would be discarded after handling the leader symbol.

Fixes coverage-inline.cpp in check-profile after r372020.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@374858 91177308-0d34-0410-b5e6-96231b3b80d8

4 years agoMerging r372606:
Tom Stellard [Sat, 12 Oct 2019 02:47:19 +0000 (02:47 +0000)]
Merging r372606:

------------------------------------------------------------------------
r372606 | spatel | 2019-09-23 06:30:23 -0700 (Mon, 23 Sep 2019) | 3 lines

[x86] fix assert with horizontal math + broadcast of vector (PR43402)

https://bugs.llvm.org/show_bug.cgi?id=43402
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@374633 91177308-0d34-0410-b5e6-96231b3b80d8

4 years ago[9.0 branch][ARM] VFPv2 only supports 16 D registers.
Tom Stellard [Thu, 10 Oct 2019 19:44:38 +0000 (19:44 +0000)]
[9.0 branch][ARM] VFPv2 only supports 16 D registers.

Summary:
Patch for 9.0.1.

Simplified version of r372186/r372187: fix the meaning of the "vfpv2" and "vfpv2sp" features, but keep around the useless "vfp2d16" and "vfp2d16sp" features, to reduce the risk on the release branch.

Fixes https://bugs.llvm.org/show_bug.cgi?id=43365

Reviewers: t.p.northover, tstellar

Reviewed By: t.p.northover

Subscribers: kristof.beyls, hiraditya, kristina, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@374433 91177308-0d34-0410-b5e6-96231b3b80d8

4 years agogn: Bump version to 9.0.1
Hans Wennborg [Thu, 10 Oct 2019 07:33:42 +0000 (07:33 +0000)]
gn: Bump version to 9.0.1

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@374286 91177308-0d34-0410-b5e6-96231b3b80d8

4 years agoBump version to 9.0.1
Tom Stellard [Wed, 9 Oct 2019 20:41:02 +0000 (20:41 +0000)]
Bump version to 9.0.1

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@374218 91177308-0d34-0410-b5e6-96231b3b80d8

4 years agogit-llvm: Update for release_90 branch
Tom Stellard [Wed, 9 Oct 2019 18:17:18 +0000 (18:17 +0000)]
git-llvm: Update for release_90 branch

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@374193 91177308-0d34-0410-b5e6-96231b3b80d8

4 years agoAdd external project LDC to release notes.
Kai Nacke [Tue, 17 Sep 2019 19:16:16 +0000 (19:16 +0000)]
Add external project LDC to release notes.

LDC, the LLVM-based D compiler, is already ready for LLVM 9.0.0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@372167 91177308-0d34-0410-b5e6-96231b3b80d8

4 years agoReleaseNotes: known issue: PR40547
Hans Wennborg [Mon, 16 Sep 2019 09:11:39 +0000 (09:11 +0000)]
ReleaseNotes: known issue: PR40547

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@371964 91177308-0d34-0410-b5e6-96231b3b80d8

4 years agoMerging r371434:
Hans Wennborg [Tue, 10 Sep 2019 07:31:55 +0000 (07:31 +0000)]
Merging r371434:
------------------------------------------------------------------------
r371434 | efriedma | 2019-09-09 20:29:27 +0200 (Mon, 09 Sep 2019) | 15 lines

[IfConversion] Correctly handle cases where analyzeBranch fails.

If analyzeBranch fails, on some targets, the out parameters point to
some blocks in the function. But we can't use that information, so make
sure to clear it out.  (In some places in IfConversion, we assume that
any block with a TrueBB is analyzable.)

The change to the testcase makes it trigger a bug on builds without this
fix: IfConvertDiamond tries to perform a followup "merge" operation,
which isn't legal, and we somehow end up with a branch to a deleted MBB.
I'm not sure how this doesn't crash the compiler.

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

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@371490 91177308-0d34-0410-b5e6-96231b3b80d8

4 years agoMerging r370592:
Hans Wennborg [Mon, 9 Sep 2019 09:48:38 +0000 (09:48 +0000)]
Merging r370592:
------------------------------------------------------------------------
r370592 | rksimon | 2019-08-31 18:21:31 +0200 (Sat, 31 Aug 2019) | 3 lines

[X86] EltsFromConsecutiveLoads - Don't confuse elt count with vector element count (PR43170)

EltsFromConsecutiveLoads was assuming that the number of input elts was the same as the number of elements in the output vector type when creating a zeroing shuffle, causing an assert when subvectors were being combined instead of just scalars.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@371382 91177308-0d34-0410-b5e6-96231b3b80d8

4 years agoMerging r371221 and r371224:
Hans Wennborg [Mon, 9 Sep 2019 09:43:19 +0000 (09:43 +0000)]
Merging r371221 and r371224:

------------------------------------------------------------------------
r371221 | spatel | 2019-09-06 18:10:18 +0200 (Fri, 06 Sep 2019) | 3 lines

[SimplifyLibCalls] handle pow(x,-0.0) before it can assert (PR43233)

https://bugs.llvm.org/show_bug.cgi?id=43233
------------------------------------------------------------------------

------------------------------------------------------------------------
r371224 | jfb | 2019-09-06 18:26:59 +0200 (Fri, 06 Sep 2019) | 39 lines

[InstCombine] pow(x, +/- 0.0) -> 1.0

Summary:
This isn't an important optimization at all... We're already doing:
  pow(x, 0.0) -> 1.0
My patch merely teaches instcombine that -0.0 does the same.

However, doing this fixes an AMAZING bug! Compile this program:

  extern "C" double pow(double, double);
  double boom(double base) {
    return pow(base, -0.0);
  }

With:
  clang++ ~/Desktop/fast-math.cpp -ffast-math -O2 -S

And clang will crash with a signal. Wow, fast math is so fast it ICEs the
compiler! Arguably, the generated math is infinitely fast.

What's actually happening is that we recurse infinitely in getPow. In debug we
hit its assertion:
  assert(Exp != 0 && "Incorrect exponent 0 not handled");

We avoid this entire mess if we instead recognize that an exponent of positive
and negative zero yield 1.0.

A separate commit, r371221, fixed the same problem. This only contains the added
tests.

<rdar://problem/54598300>

Reviewers: scanon

Subscribers: hiraditya, jkorous, dexonsmith, ributzka, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D67248
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@371381 91177308-0d34-0410-b5e6-96231b3b80d8

4 years agoMerging r371305 and r371307:
Hans Wennborg [Mon, 9 Sep 2019 09:36:49 +0000 (09:36 +0000)]
Merging r371305 and r371307:

------------------------------------------------------------------------
r371305 | nikic | 2019-09-07 14:03:48 +0200 (Sat, 07 Sep 2019) | 1 line

[X86] Add test for PR43230; NFC
------------------------------------------------------------------------

------------------------------------------------------------------------
r371307 | nikic | 2019-09-07 14:13:44 +0200 (Sat, 07 Sep 2019) | 9 lines

[X86] Fix pshuflw formation from repeated shuffle mask (PR43230)

Fix for https://bugs.llvm.org/show_bug.cgi?id=43230.

When creating PSHUFLW from a repeated shuffle mask, we have to apply
the checks to the repeated mask, not the original one. For the test
case from PR43230 the inspected part of the original mask is all undef.

Differential Revision: https://reviews.llvm.org/D67314
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@371378 91177308-0d34-0410-b5e6-96231b3b80d8

4 years agoMerging r371111:
Hans Wennborg [Mon, 9 Sep 2019 09:08:44 +0000 (09:08 +0000)]
Merging r371111:
------------------------------------------------------------------------
r371111 | efriedma | 2019-09-05 22:02:38 +0200 (Thu, 05 Sep 2019) | 17 lines

[IfConversion] Fix diamond conversion with unanalyzable branches.

The code was incorrectly counting the number of identical instructions,
and therefore tried to predicate an instruction which should not have
been predicated.  This could have various effects: a compiler crash,
an assembler failure, a miscompile, or just generating an extra,
unnecessary instruction.

Instead of depending on TargetInstrInfo::removeBranch, which only
works on analyzable branches, just remove all branch instructions.

Fixes https://bugs.llvm.org/show_bug.cgi?id=43121 and
https://bugs.llvm.org/show_bug.cgi?id=41121 .

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

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@371377 91177308-0d34-0410-b5e6-96231b3b80d8

4 years agoMerging r371262:
Hans Wennborg [Mon, 9 Sep 2019 08:59:27 +0000 (08:59 +0000)]
Merging r371262:
------------------------------------------------------------------------
r371262 | nickdesaulniers | 2019-09-06 23:50:11 +0200 (Fri, 06 Sep 2019) | 45 lines

[IR] CallBrInst: scan+update arg list when indirect dest list changes

Summary:
There's an unspoken invariant of callbr that the list of BlockAddress
Constants in the "function args" list match the BasicBlocks in the
"other labels" list. (This invariant is being added to the LangRef in
https://reviews.llvm.org/D67196).

When modifying the any of the indirect destinations of a callbr
instruction (possible jump targets), we need to update the function
arguments if the argument is a BlockAddress whose BasicBlock refers to
the indirect destination BasicBlock being replaced.  Otherwise, many
transforms that modify successors will end up violating that invariant.
A recent change to the arm64 Linux kernel exposed this bug, which
prevents the kernel from booting.

I considered maintaining a mapping from indirect destination BasicBlock
to argument operand BlockAddress, but this ends up being a one to
potentially many (though usually one) mapping.  Also, the list of
arguments to a function (or more typically inline assembly) ends up
being less than 10.  The implementation is significantly simpler to just
rescan the full list of arguments. Because of the one to potentially
many relationship, the full arg list must be scanned (we can't stop at
the first instance).

Thanks to the following folks that reported the issue and helped debug
it:
* Nathan Chancellor
* Will Deacon
* Andrew Murray
* Craig Topper

Link: https://bugs.llvm.org/show_bug.cgi?id=43222
Link: https://github.com/ClangBuiltLinux/linux/issues/649
Link: https://lists.infradead.org/pipermail/linux-arm-kernel/2019-September/678330.html
Reviewers: craig.topper, chandlerc

Reviewed By: craig.topper

Subscribers: void, javed.absar, kristof.beyls, hiraditya, llvm-commits, nathanchance, srhines

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D67252
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@371376 91177308-0d34-0410-b5e6-96231b3b80d8

4 years agoMerging r371088 and r371095:
Hans Wennborg [Fri, 6 Sep 2019 08:17:47 +0000 (08:17 +0000)]
Merging r371088 and r371095:

------------------------------------------------------------------------
r371088 | spatel | 2019-09-05 18:58:18 +0200 (Thu, 05 Sep 2019) | 1 line

[x86] add test for horizontal math bug (PR43225); NFC
------------------------------------------------------------------------

------------------------------------------------------------------------
r371095 | spatel | 2019-09-05 19:28:17 +0200 (Thu, 05 Sep 2019) | 3 lines

[x86] fix horizontal math bug exposed by improved demanded elements analysis (PR43225)

https://bugs.llvm.org/show_bug.cgi?id=43225
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@371178 91177308-0d34-0410-b5e6-96231b3b80d8

4 years agoMerging r370426:
Hans Wennborg [Thu, 5 Sep 2019 11:43:42 +0000 (11:43 +0000)]
Merging r370426:
------------------------------------------------------------------------
r370426 | maskray | 2019-08-30 04:20:49 +0200 (Fri, 30 Aug 2019) | 26 lines

[PPC32] Emit R_PPC_GOT_TPREL16 instead R_PPC_GOT_TPREL16_LO

Unlike ppc64, which has ADDISgotTprelHA+LDgotTprelL pairs,
ppc32 just uses LDgotTprelL32, so it does not make lots of sense to use
_LO without a paired _HA.

Emit R_PPC_GOT_TPREL16 instead R_PPC_GOT_TPREL16_LO to match GCC, and
get better linker relocation check. Note, R_PPC_GOT_TPREL16_{HA,LO}
don't have good linker support:

(a) lld does not support R_PPC_GOT_TPREL16_{HA,LO}.
(b) Top of tree ld.bfd does not support R_PPC_GOT_REL16_HA Initial-Exec -> Local-Exec relaxation:

  // a.o
  addis 3, 3, tsd_tls@got@tprel@ha
  lwz 3, tsd_tls@got@tprel@l(3)
  add 3, 3, tsd_tls@tls
  // b.o
  .section .tdata,"awT"; .globl tsd_tls; tsd_tls:

  // ld/ld-new a.o b.o
  internal error, aborting at ../../bfd/elf32-ppc.c:7952 in ppc_elf_relocate_section

Reviewed By: adalava

Differential Revision: https://reviews.llvm.org/D66925
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@371059 91177308-0d34-0410-b5e6-96231b3b80d8

4 years agoMerging r371048:
Hans Wennborg [Thu, 5 Sep 2019 11:33:27 +0000 (11:33 +0000)]
Merging r371048:
------------------------------------------------------------------------
r371048 | jonpa | 2019-09-05 12:20:05 +0200 (Thu, 05 Sep 2019) | 7 lines

[SystemZ]  Recognize INLINEASM_BR in backend

Handle the remaining cases also by handling asm goto in
SystemZInstrInfo::getBranchInfo().

Review: Ulrich Weigand
https://reviews.llvm.org/D67151
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@371057 91177308-0d34-0410-b5e6-96231b3b80d8

4 years agoMerging r370430:
Hans Wennborg [Thu, 5 Sep 2019 10:50:25 +0000 (10:50 +0000)]
Merging r370430:
------------------------------------------------------------------------
r370430 | djg | 2019-08-30 06:33:22 +0200 (Fri, 30 Aug 2019) | 12 lines

[CodeGen] Fix lowering for returning the result of an extractvalue

When the number of return values exceeds the number of registers available,
SelectionDAGBuilder::visitRet transforms a function's return to use a
pointer to a buffer to hold return values. When the returned value is an
operator such as extractvalue, the value may have a non-zero result number.
Add that number to the indexing when obtaining the values to store.

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

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

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@371053 91177308-0d34-0410-b5e6-96231b3b80d8

4 years agoMerging r370720 and r370721:
Hans Wennborg [Thu, 5 Sep 2019 09:57:35 +0000 (09:57 +0000)]
Merging r370720 and r370721:

------------------------------------------------------------------------
r370720 | bjope | 2019-09-03 11:33:40 +0200 (Tue, 03 Sep 2019) | 13 lines

[LV] Precommit test case showing miscompile from PR43166. NFC

Summary:  Precommit test case showing miscompile from PR43166.

Reviewers: fhahn, Ayal

Reviewed By: fhahn

Subscribers: rkruppe, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D67072
------------------------------------------------------------------------

------------------------------------------------------------------------
r370721 | bjope | 2019-09-03 11:33:55 +0200 (Tue, 03 Sep 2019) | 20 lines

[LV] Fix miscompiles by adding non-header PHI nodes to AllowedExit

Summary:
Fold-tail currently supports reduction last-vector-value live-out's,
but has yet to support last-scalar-value live-outs, including
non-header phi's. As it relies on AllowedExit in order to detect
them and bail out we need to add the non-header PHI nodes to
AllowedExit, otherwise we end up with miscompiles.

Solves https://bugs.llvm.org/show_bug.cgi?id=43166

Reviewers: fhahn, Ayal

Reviewed By: fhahn, Ayal

Subscribers: anna, hiraditya, rkruppe, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D67074
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@371044 91177308-0d34-0410-b5e6-96231b3b80d8

4 years agoMerging r370753:
Hans Wennborg [Thu, 5 Sep 2019 09:54:36 +0000 (09:54 +0000)]
Merging r370753:
------------------------------------------------------------------------
r370753 | jonpa | 2019-09-03 15:31:22 +0200 (Tue, 03 Sep 2019) | 6 lines

[SystemZ]  Recognize INLINEASM_BR in backend.

SystemZInstrInfo::analyzeBranch() needs to check for INLINEASM_BR
instructions, or it will crash.

Review: Ulrich Weigand
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@371043 91177308-0d34-0410-b5e6-96231b3b80d8

4 years agoMerging r369310:
Hans Wennborg [Thu, 5 Sep 2019 09:51:30 +0000 (09:51 +0000)]
Merging r369310:
------------------------------------------------------------------------
r369310 | hubert.reinterpretcast | 2019-08-20 01:12:48 +0200 (Tue, 20 Aug 2019) | 24 lines

[cmake] Link in LLVMPasses due to dependency by LLVMOrcJIT; NFC

Summary:
rL367756 (f5c40cb) increases the dependency of LLVMOrcJIT on LLVMPasses.
In particular, symbols defined in LLVMPasses that are referenced by the
destructor of `PassBuilder` are now referenced by LLVMOrcJIT through
`Speculation.cpp.o`.

We believe that referencing symbols defined in LLVMPasses in the
destructor of `PassBuilder` is valid, and that adding to the set of such
symbols is legitimate. To support such cases, this patch adds LLVMPasses
to the set of libraries being linked when linking in LLVMOrcJIT causes
such symbols from LLVMPasses to be referenced.

Reviewers: Whitney, anhtuyen, pree-jackie

Reviewed By: pree-jackie

Subscribers: mgorny, llvm-commits

Tags: #llvm

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

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@371042 91177308-0d34-0410-b5e6-96231b3b80d8

4 years agoindex.rst: Remove non-release warning
Hans Wennborg [Fri, 30 Aug 2019 15:15:53 +0000 (15:15 +0000)]
index.rst: Remove non-release warning

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@370477 91177308-0d34-0410-b5e6-96231b3b80d8

4 years agoMerging r370355:
Hans Wennborg [Fri, 30 Aug 2019 09:06:49 +0000 (09:06 +0000)]
Merging r370355:
------------------------------------------------------------------------
r370355 | joerg | 2019-08-29 15:22:30 +0200 (Thu, 29 Aug 2019) | 5 lines

Allow replaceAndRecursivelySimplify to list unsimplified visitees.

This is part of D65280 and split it to avoid ABI changes on the 9.0
release branch.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@370447 91177308-0d34-0410-b5e6-96231b3b80d8

4 years agoMerging r370404:
Hans Wennborg [Fri, 30 Aug 2019 09:02:10 +0000 (09:02 +0000)]
Merging r370404:
------------------------------------------------------------------------
r370404 | rksimon | 2019-08-29 22:22:08 +0200 (Thu, 29 Aug 2019) | 3 lines

[X86][SSE] combinePMULDQ - pmuldq(x, 0) -> zero vector (PR43159)

ISD::isBuildVectorAllZeros permits undef elements to be present, which means we can't return it as a zero vector. PMULDQ/PMULUDQ is an extending multiply so a multiply by zero of the lower 32-bits should result in a zero 64-bit element.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@370445 91177308-0d34-0410-b5e6-96231b3b80d8

4 years agoReleaseNotes: pocl and TCE; by Pekka Jääskeläinen
Hans Wennborg [Fri, 30 Aug 2019 07:34:24 +0000 (07:34 +0000)]
ReleaseNotes: pocl and TCE; by Pekka Jääskeläinen

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@370439 91177308-0d34-0410-b5e6-96231b3b80d8

4 years agoMerging r368164:
Hans Wennborg [Fri, 30 Aug 2019 07:27:12 +0000 (07:27 +0000)]
Merging r368164:
------------------------------------------------------------------------
r368164 | s.desmalen | 2019-08-07 14:41:38 +0200 (Wed, 07 Aug 2019) | 13 lines

[AArch64][WinCFI] Do not pair callee-save instructions in LoadStoreOptimizer

Prevent the LoadStoreOptimizer from pairing any load/store instructions with
instructions from the prologue/epilogue if the CFI information has encoded the
operations as separate instructions.  This would otherwise lead to a mismatch
of the actual prologue size from the size as recorded in the Windows CFI.

Reviewers: efriedma, mstorsjo, ssijaric

Reviewed By: efriedma

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

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@370438 91177308-0d34-0410-b5e6-96231b3b80d8

4 years agoReleaseNotes: cleanups
Hans Wennborg [Thu, 29 Aug 2019 13:41:38 +0000 (13:41 +0000)]
ReleaseNotes: cleanups

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@370357 91177308-0d34-0410-b5e6-96231b3b80d8

4 years agoReleaseNotes: remove in-progress warning and empty sections
Hans Wennborg [Thu, 29 Aug 2019 13:23:59 +0000 (13:23 +0000)]
ReleaseNotes: remove in-progress warning and empty sections

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@370356 91177308-0d34-0410-b5e6-96231b3b80d8

4 years agoReleaseNotes: matching wide stores (r362472)
Hans Wennborg [Thu, 29 Aug 2019 13:03:14 +0000 (13:03 +0000)]
ReleaseNotes: matching wide stores (r362472)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_90@370352 91177308-0d34-0410-b5e6-96231b3b80d8