FailedChanges

Summary

  1. [tests] Ensure all test cases use named variables This makes it easier to read and possibly even modify the test cases, as there is no need to keep the variable increment in steps of one. More importantly, by using explicit variable names we do not need to rely on the implicit numbering of statements when dumping the scop information. This makes it easier to read and possibly even modify the test cases. Furthermore, by using explicit variables we do not need to rely on the implicit numbering of statements when dumping the scop information. In a future commit, this implicit numbering will likely not be used any more to refer to LLVM-IR values as it is very expensive to construct.
  2. [ValueTracking] Teach isSafeToSpeculativelyExecute() about the speculatable attribute Patch by Tom Stellard
  3. [WebAssembly] Write initial memory in pages not bytes Subscribers: jfb, dschuff Differential Revision: https://reviews.llvm.org/D32660
  4. Public headers need to be public.
  5. TableGen: Add IntrHasSideEffects property for intrinsics The IntrNoMem, IntrReadMem, IntrWriteMem, and IntrArgMemOnly intrinsic properties differ from their corresponding LLVM IR attributes by specifying that the intrinsic, in addition to its memory properties, has no other side effects. The IntrHasSideEffects flag used in combination with one of the memory flags listed above, makes it possible to define an intrinsic such that its properties at the CodeGen layer match its properties at the IR layer. Patch by Tom Stellard
  6. Enable -fno-split-dwarf-inlining even when -gsplit-dwarf isn't specified. Since -gsplit-dwarf is specified on a backend compile (in ThinLTO parlance) it isn't passed during the frontend compile (because no ELF object/dwo file is produced then), yet the -fno-split-dwarf-inlining value needs to be encoded in the LLVM DebugInfo metadata to have effect... So let it be specified & it'll be silently ignored if -gsplit-dwarf isn't used in the end, otherwise it'll be used on a per-cu basis depending on where it's specified in the frontend compile actions.
  7. Change the format of the map file. Previously, we printed out input sections and input files in separate columns as shown below. Address Size Align Out In File Symbol 0000000000201000 0000000000000015 4 .text 0000000000201000 000000000000000e 4 .text 0000000000201000 000000000000000e 4 foo.o 0000000000201000 0000000000000000 0 _start 0000000000201005 0000000000000000 0 f(int) 000000000020100e 0000000000000000 0 local 0000000000201010 0000000000000002 4 bar.o 0000000000201010 0000000000000000 0 foo 0000000000201011 0000000000000000 0 bar This format doesn't make much sense because for each input section, there's always exactly one input file. This patch changes the format to this. Address Size Align Out In Symbol 0000000000201000 0000000000000015 4 .text 0000000000201000 000000000000000e 4 foo.o:(.text) 0000000000201000 0000000000000000 0 _start 0000000000201005 0000000000000000 0 f(int) 000000000020100e 0000000000000000 0 local 0000000000201010 0000000000000002 4 bar.o:(.text) 0000000000201010 0000000000000000 0 foo 0000000000201011 0000000000000000 0 bar Differential Revision: https://reviews.llvm.org/D32657
  8. Make getParamAlignment use argument numbers The method is called "get *Param* Alignment", and is only used for return values exactly once, so it should take argument indices, not attribute indices. Avoids confusing code like: IsSwiftError = CS->paramHasAttr(ArgIdx, Attribute::SwiftError); Alignment = CS->getParamAlignment(ArgIdx + 1); Add getRetAlignment to handle the one case in Value.cpp that wants the return value alignment. This is a potentially breaking change for out-of-tree backends that do their own call lowering.
  9. GlobalISel: Followup for r301679
  10. Add speculatable function attribute This attribute tells the optimizer that the function may be speculated. Patch by Tom Stellard
  11. TargetLowering: Add finalizeLowering() function; NFC Adds a new method finalizeLowering to TargetLoweringBase. This is in preparation for an upcoming commit. This function is meant for target specific adjustments to MachineFrameInfo or register reservations. Move the freezeRegisters() and the hasCopyImplyingStackAdjustment() handling into the new function to prove the concept. As an added bonus GlobalISel no longer missed the hasCopyImplyingStackAdjustment() handling with this. Differential Revision: https://reviews.llvm.org/D32621
  12. Remove LinkerScript::flush. This patch replaces flush with a last ditch attempt at synchronizing the section list with the linker script "AST". The synchronization is a bit of a hack and should in time be avoided by creating the AST earlier so that modifications can be made directly to it instead of modifying the section list and synchronizing it back. This is the main step for fixing https://bugs.llvm.org/show_bug.cgi?id=32816. With this in place I think the only missing thing would be to have processCommands assign section indexes as dummy offsets so that the sort in OutputSection::finalize works. With this LinkerScript::assignAddresses becomes much simpler, which should help with the thunk work.
Revision 301689 by grosser:
[tests] Ensure all test cases use named variables

This makes it easier to read and possibly even modify the test cases, as there
is no need to keep the variable increment in steps of one. More importantly, by
using explicit variable names we do not need to rely on the implicit numbering
of statements when dumping the scop information.

This makes it easier to read and possibly even modify the test cases.
Furthermore, by using explicit variables we do not need to rely on the implicit
numbering of statements when dumping the scop information. In a future commit,
this implicit numbering will likely not be used any more to refer to LLVM-IR
values as it is very expensive to construct.
Change TypePath in RepositoryPath in Workspace
The file was modified/polly/trunk/test/Isl/CodeGen/loop_with_condition.ll (diff)llvm-revision.src/polly/trunk/test/Isl/CodeGen/loop_with_condition.ll
The file was modified/polly/trunk/test/Isl/CodeGen/loop_with_condition_ineq.ll (diff)llvm-revision.src/polly/trunk/test/Isl/CodeGen/loop_with_condition_ineq.ll
The file was modified/polly/trunk/test/Isl/CodeGen/loop_with_condition_nested.ll (diff)llvm-revision.src/polly/trunk/test/Isl/CodeGen/loop_with_condition_nested.ll
The file was modified/polly/trunk/test/Isl/CodeGen/unpredictable-loop-unsynthesizable.ll (diff)llvm-revision.src/polly/trunk/test/Isl/CodeGen/unpredictable-loop-unsynthesizable.ll
The file was modified/polly/trunk/test/ScopInfo/aliasing_with_non_affine_access.ll (diff)llvm-revision.src/polly/trunk/test/ScopInfo/aliasing_with_non_affine_access.ll
The file was modified/polly/trunk/test/ScopInfo/invariant-loads-leave-read-only-statements.ll (diff)llvm-revision.src/polly/trunk/test/ScopInfo/invariant-loads-leave-read-only-statements.ll
The file was modified/polly/trunk/test/ScopInfo/loop_carry.ll (diff)llvm-revision.src/polly/trunk/test/ScopInfo/loop_carry.ll
The file was modified/polly/trunk/test/ScopInfo/parameter-constant-division.ll (diff)llvm-revision.src/polly/trunk/test/ScopInfo/parameter-constant-division.ll
Revision 301688 by arsenm:
[ValueTracking] Teach isSafeToSpeculativelyExecute() about the speculatable attribute

Patch by Tom Stellard
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Analysis/ValueTracking.cpp (diff)llvm-revision.src/llvm/trunk/lib/Analysis/ValueTracking.cpp
The file was added/llvm/trunk/test/Transforms/SimplifyCFG/speculate-call.llllvm-revision.src/llvm/trunk/test/Transforms/SimplifyCFG/speculate-call.ll
Revision 301687 by sbc:
[WebAssembly] Write initial memory in pages not bytes

Subscribers: jfb, dschuff

Differential Revision: https://reviews.llvm.org/D32660
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Support/Wasm.h (diff)llvm-revision.src/llvm/trunk/include/llvm/Support/Wasm.h
The file was modified/llvm/trunk/lib/MC/WasmObjectWriter.cpp (diff)llvm-revision.src/llvm/trunk/lib/MC/WasmObjectWriter.cpp
The file was modified/llvm/trunk/test/MC/WebAssembly/sections.ll (diff)llvm-revision.src/llvm/trunk/test/MC/WebAssembly/sections.ll
The file was modified/llvm/trunk/test/tools/llvm-readobj/sections.test (diff)llvm-revision.src/llvm/trunk/test/tools/llvm-readobj/sections.test
The file was modified/llvm/trunk/tools/llvm-readobj/WasmDumper.cpp (diff)llvm-revision.src/llvm/trunk/tools/llvm-readobj/WasmDumper.cpp
Revision 301686 by penryu:
Public headers need to be public.
Change TypePath in RepositoryPath in Workspace
The file was modified/lldb/trunk/lldb.xcodeproj/project.pbxproj (diff)llvm-revision.src/lldb/trunk/lldb.xcodeproj/project.pbxproj
Revision 301685 by arsenm:
TableGen: Add IntrHasSideEffects property for intrinsics

The IntrNoMem, IntrReadMem, IntrWriteMem, and IntrArgMemOnly intrinsic
properties differ from their corresponding LLVM IR attributes by specifying
that the intrinsic, in addition to its memory properties, has no other side
effects.

The IntrHasSideEffects flag used in combination with one of the memory flags
listed above, makes it possible to define an intrinsic such that its
properties at the CodeGen layer match its properties at the IR layer.

Patch by Tom Stellard
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/IR/Intrinsics.td (diff)llvm-revision.src/llvm/trunk/include/llvm/IR/Intrinsics.td
The file was modified/llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp (diff)llvm-revision.src/llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
The file was modified/llvm/trunk/utils/TableGen/CodeGenIntrinsics.h (diff)llvm-revision.src/llvm/trunk/utils/TableGen/CodeGenIntrinsics.h
The file was modified/llvm/trunk/utils/TableGen/CodeGenTarget.cpp (diff)llvm-revision.src/llvm/trunk/utils/TableGen/CodeGenTarget.cpp
The file was modified/llvm/trunk/utils/TableGen/IntrinsicEmitter.cpp (diff)llvm-revision.src/llvm/trunk/utils/TableGen/IntrinsicEmitter.cpp
Revision 301684 by dblaikie:
Enable -fno-split-dwarf-inlining even when -gsplit-dwarf isn't specified.

Since -gsplit-dwarf is specified on a backend compile (in ThinLTO
parlance) it isn't passed during the frontend compile (because no ELF
object/dwo file is produced then), yet the -fno-split-dwarf-inlining
value needs to be encoded in the LLVM DebugInfo metadata to have
effect...

So let it be specified & it'll be silently ignored if -gsplit-dwarf
isn't used in the end, otherwise it'll be used on a per-cu basis
depending on where it's specified in the frontend compile actions.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/Driver/ToolChains/Clang.cpp (diff)llvm-revision.src/cfe/trunk/lib/Driver/ToolChains/Clang.cpp
The file was modified/cfe/trunk/test/Driver/split-debug.c (diff)llvm-revision.src/cfe/trunk/test/Driver/split-debug.c
Revision 301683 by ruiu:
Change the format of the map file.

Previously, we printed out input sections and input files in
separate columns as shown below.

  Address          Size             Align Out     In      File    Symbol
  0000000000201000 0000000000000015     4 .text
  0000000000201000 000000000000000e     4         .text
  0000000000201000 000000000000000e     4                 foo.o
  0000000000201000 0000000000000000     0                         _start
  0000000000201005 0000000000000000     0                         f(int)
  000000000020100e 0000000000000000     0                         local
  0000000000201010 0000000000000002     4                 bar.o
  0000000000201010 0000000000000000     0                         foo
  0000000000201011 0000000000000000     0                         bar

This format doesn't make much sense because for each input section,
there's always exactly one input file. This patch changes the format
to this.

  Address          Size             Align Out     In      Symbol
  0000000000201000 0000000000000015     4 .text
  0000000000201000 000000000000000e     4         foo.o:(.text)
  0000000000201000 0000000000000000     0                 _start
  0000000000201005 0000000000000000     0                 f(int)
  000000000020100e 0000000000000000     0                 local
  0000000000201010 0000000000000002     4         bar.o:(.text)
  0000000000201010 0000000000000000     0                 foo
  0000000000201011 0000000000000000     0                 bar

Differential Revision: https://reviews.llvm.org/D32657
Change TypePath in RepositoryPath in Workspace
The file was modified/lld/trunk/ELF/MapFile.cpp (diff)llvm-revision.src/lld/trunk/ELF/MapFile.cpp
The file was modified/lld/trunk/test/ELF/map-file.s (diff)llvm-revision.src/lld/trunk/test/ELF/map-file.s
Revision 301682 by rnk:
Make getParamAlignment use argument numbers

The method is called "get *Param* Alignment", and is only used for
return values exactly once, so it should take argument indices, not
attribute indices.

Avoids confusing code like:
  IsSwiftError = CS->paramHasAttr(ArgIdx, Attribute::SwiftError);
  Alignment  = CS->getParamAlignment(ArgIdx + 1);

Add getRetAlignment to handle the one case in Value.cpp that wants the
return value alignment.

This is a potentially breaking change for out-of-tree backends that do
their own call lowering.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/IR/Attributes.h (diff)llvm-revision.src/llvm/trunk/include/llvm/IR/Attributes.h
The file was modified/llvm/trunk/include/llvm/IR/CallSite.h (diff)llvm-revision.src/llvm/trunk/include/llvm/IR/CallSite.h
The file was modified/llvm/trunk/include/llvm/IR/Function.h (diff)llvm-revision.src/llvm/trunk/include/llvm/IR/Function.h
The file was modified/llvm/trunk/include/llvm/IR/Instructions.h (diff)llvm-revision.src/llvm/trunk/include/llvm/IR/Instructions.h
The file was modified/llvm/trunk/include/llvm/IR/IntrinsicInst.h (diff)llvm-revision.src/llvm/trunk/include/llvm/IR/IntrinsicInst.h
The file was modified/llvm/trunk/lib/CodeGen/GlobalISel/CallLowering.cpp (diff)llvm-revision.src/llvm/trunk/lib/CodeGen/GlobalISel/CallLowering.cpp
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp (diff)llvm-revision.src/llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp
The file was modified/llvm/trunk/lib/IR/Attributes.cpp (diff)llvm-revision.src/llvm/trunk/lib/IR/Attributes.cpp
The file was modified/llvm/trunk/lib/IR/Function.cpp (diff)llvm-revision.src/llvm/trunk/lib/IR/Function.cpp
The file was modified/llvm/trunk/lib/IR/Value.cpp (diff)llvm-revision.src/llvm/trunk/lib/IR/Value.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/NVPTX/NVPTXAsmPrinter.cpp (diff)llvm-revision.src/llvm/trunk/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
The file was modified/llvm/trunk/lib/Target/NVPTX/NVPTXLowerArgs.cpp (diff)llvm-revision.src/llvm/trunk/lib/Target/NVPTX/NVPTXLowerArgs.cpp
The file was modified/llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp (diff)llvm-revision.src/llvm/trunk/lib/Transforms/Instrumentation/MemorySanitizer.cpp
The file was modified/llvm/trunk/lib/Transforms/Scalar/MemCpyOptimizer.cpp (diff)llvm-revision.src/llvm/trunk/lib/Transforms/Scalar/MemCpyOptimizer.cpp
The file was modified/llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp (diff)llvm-revision.src/llvm/trunk/lib/Transforms/Utils/InlineFunction.cpp
Revision 301681 by matze:
GlobalISel: Followup for r301679
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/GlobalISel/IRTranslator.cpp (diff)llvm-revision.src/llvm/trunk/lib/CodeGen/GlobalISel/IRTranslator.cpp
Revision 301680 by arsenm:
Add speculatable function attribute

This attribute tells the optimizer that the function may be speculated.

Patch by Tom Stellard
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/docs/LangRef.rst (diff)llvm-revision.src/llvm/trunk/docs/LangRef.rst
The file was modified/llvm/trunk/include/llvm/Bitcode/LLVMBitCodes.h (diff)llvm-revision.src/llvm/trunk/include/llvm/Bitcode/LLVMBitCodes.h
The file was modified/llvm/trunk/include/llvm/IR/Attributes.td (diff)llvm-revision.src/llvm/trunk/include/llvm/IR/Attributes.td
The file was modified/llvm/trunk/include/llvm/IR/Function.h (diff)llvm-revision.src/llvm/trunk/include/llvm/IR/Function.h
The file was modified/llvm/trunk/include/llvm/IR/Intrinsics.td (diff)llvm-revision.src/llvm/trunk/include/llvm/IR/Intrinsics.td
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/Bitcode/Reader/BitcodeReader.cpp (diff)llvm-revision.src/llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp
The file was modified/llvm/trunk/lib/Bitcode/Writer/BitcodeWriter.cpp (diff)llvm-revision.src/llvm/trunk/lib/Bitcode/Writer/BitcodeWriter.cpp
The file was modified/llvm/trunk/lib/IR/Attributes.cpp (diff)llvm-revision.src/llvm/trunk/lib/IR/Attributes.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/test/Bitcode/attributes.ll (diff)llvm-revision.src/llvm/trunk/test/Bitcode/attributes.ll
The file was modified/llvm/trunk/test/Bitcode/compatibility.ll (diff)llvm-revision.src/llvm/trunk/test/Bitcode/compatibility.ll
The file was added/llvm/trunk/test/Verifier/speculatable-callsite-invalid.llllvm-revision.src/llvm/trunk/test/Verifier/speculatable-callsite-invalid.ll
The file was added/llvm/trunk/test/Verifier/speculatable-callsite.llllvm-revision.src/llvm/trunk/test/Verifier/speculatable-callsite.ll
The file was modified/llvm/trunk/utils/TableGen/CodeGenIntrinsics.h (diff)llvm-revision.src/llvm/trunk/utils/TableGen/CodeGenIntrinsics.h
The file was modified/llvm/trunk/utils/TableGen/CodeGenTarget.cpp (diff)llvm-revision.src/llvm/trunk/utils/TableGen/CodeGenTarget.cpp
The file was modified/llvm/trunk/utils/TableGen/IntrinsicEmitter.cpp (diff)llvm-revision.src/llvm/trunk/utils/TableGen/IntrinsicEmitter.cpp
Revision 301679 by matze:
TargetLowering: Add finalizeLowering() function; NFC

Adds a new method finalizeLowering to TargetLoweringBase. This is in
preparation for an upcoming commit.

This function is meant for target specific adjustments to
MachineFrameInfo or register reservations.

Move the freezeRegisters() and the hasCopyImplyingStackAdjustment()
handling into the new function to prove the concept. As an added bonus
GlobalISel no longer missed the hasCopyImplyingStackAdjustment()
handling with this.

Differential Revision: https://reviews.llvm.org/D32621
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/Target/TargetLowering.h (diff)llvm-revision.src/llvm/trunk/include/llvm/Target/TargetLowering.h
The file was modified/llvm/trunk/lib/CodeGen/GlobalISel/IRTranslator.cpp (diff)llvm-revision.src/llvm/trunk/lib/CodeGen/GlobalISel/IRTranslator.cpp
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp (diff)llvm-revision.src/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
The file was modified/llvm/trunk/lib/CodeGen/TargetLoweringBase.cpp (diff)llvm-revision.src/llvm/trunk/lib/CodeGen/TargetLoweringBase.cpp
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (diff)llvm-revision.src/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
The file was modified/llvm/trunk/lib/Target/X86/X86ISelLowering.h (diff)llvm-revision.src/llvm/trunk/lib/Target/X86/X86ISelLowering.h
Revision 301678 by rafael:
Remove LinkerScript::flush.

This patch replaces flush with a last ditch attempt at synchronizing
the section list with the linker script "AST".

The synchronization is a bit of a hack and should in time be avoided
by creating the AST earlier so that modifications can be made directly
to it instead of modifying the section list and synchronizing it back.

This is the main step for fixing
https://bugs.llvm.org/show_bug.cgi?id=32816. With this in place I
think the only missing thing would be to have processCommands assign
section indexes as dummy offsets so that the sort in
OutputSection::finalize works.

With this LinkerScript::assignAddresses becomes much simpler, which
should help with the thunk work.
Change TypePath in RepositoryPath in Workspace
The file was modified/lld/trunk/ELF/LinkerScript.cpp (diff)llvm-revision.src/lld/trunk/ELF/LinkerScript.cpp
The file was modified/lld/trunk/ELF/LinkerScript.h (diff)llvm-revision.src/lld/trunk/ELF/LinkerScript.h
The file was modified/lld/trunk/ELF/Writer.cpp (diff)llvm-revision.src/lld/trunk/ELF/Writer.cpp