SuccessChanges

Changes from Git (git http://labmaster3.local/git/llvm-project.git)

Summary

  1. [X86] Add 32-bit mode sse1 command line to scalar-int-to-fp.ll. NFC (details)
  2. [X86] When handling i64->f32 sint_to_fp on 32-bit targets only bitcast (details)
  3. [SampleFDO] Fix invalid branch profile generated by indirect call (details)
  4. PR42694 Support explicit(bool) in older language modes as an extension. (details)
  5. [lldb/Reproducers] Extract function for reading environment override (details)
  6. Set some fast math attributes in setFunctionAttributes (details)
  7. [lldb/Reproducers] Add a flag to always generating a reproducer (details)
Commit bff9f84dc85b2b4ef0d5efe2691d3411d2abcb60 by craig.topper
[X86] Add 32-bit mode sse1 command line to scalar-int-to-fp.ll. NFC
The file was modifiedllvm/test/CodeGen/X86/scalar-int-to-fp.ll
Commit e4454479212b28532909e0a0782b0102e9bcd1c4 by craig.topper
[X86] When handling i64->f32 sint_to_fp on 32-bit targets only bitcast
to f64 if sse2 is enabled.
The code is trying to copy the i64 value to an xmm register to use a
64-bit store so that the 64-bit fild can benefit from store forwarding.
But this trick only works if f64 is going to be stored in an XMM
register. If we only have SSE1 then only float is in xmm register. So
this trick just causes 2 stores i32 stores, an f64 load into the x87, an
f64 from x87, and a 64-bit fild. So we end up with an extra stack
temporary and still didn't get store forwarding.
We might be able to use v2f32 here instead, but I didn't check. I just
wanted the code to make sense.
Found by inspection as I continue to stare too hard at our int_to_fp
conversions.
The file was modifiedllvm/test/CodeGen/X86/scalar-int-to-fp.ll
The file was modifiedllvm/lib/Target/X86/X86ISelLowering.cpp
Commit 154cd6de513e1e9ce794ba2d1eae1647c873f812 by wmi
[SampleFDO] Fix invalid branch profile generated by indirect call
promotion.
Suppose an inline instance has hot total sample count but 0 entry count,
and it is an indirect call target. If the indirect call has no other
call target and inline instance associated with it and it is promoted,
currently the conditional branch generated by indirect call promotion
will have invalid branch profile which is !{!"branch_weights", i32 0,
i32 0} -- because the entry count of the promoted target is 0 and the
total entry count of all targets is also 0. This caused a SEGV in
Control Height Reduction and may cause problem in other passes.
Function entry count of an inline instance is computed by a heuristic --
using either the sample of the starting line or starting inner inline
instance. The patch changes the heuristic a little bit so that when
total sample count is larger than 0, the computed entry count will be at
least 1. Then the new branch profile will be !{!"branch_weights", i32 1,
i32 0}.
Differential Revision: https://reviews.llvm.org/D72790
The file was modifiedllvm/test/Transforms/SampleProfile/Inputs/indirect-call.prof
The file was modifiedllvm/include/llvm/ProfileData/SampleProf.h
The file was modifiedllvm/test/Transforms/SampleProfile/Inputs/indirect-call.compact.afdo
The file was modifiedllvm/test/Transforms/SampleProfile/inline-callee-update.ll
The file was modifiedllvm/test/Transforms/SampleProfile/indirect-call.ll
Commit 45d70806f4386adfb62b0d75949a8aad58e0576f by richard
PR42694 Support explicit(bool) in older language modes as an extension.
This needs somewhat careful disambiguation, as C++2a explicit(bool) is a
breaking change. We only enable it in cases where the source construct
could not possibly be anything else.
The file was modifiedclang/lib/Parse/ParseDecl.cpp
The file was modifiedclang/lib/Parse/ParseTentative.cpp
The file was modifiedclang/lib/Parse/Parser.cpp
The file was modifiedclang/include/clang/Basic/DiagnosticParseKinds.td
The file was modifiedclang/include/clang/Parse/Parser.h
The file was modifiedclang/test/SemaCXX/cxx2a-explicit-bool.cpp
Commit b54a50f52e9427f250c192a8618b881732e5d7a4 by Jonas Devlieghere
[lldb/Reproducers] Extract function for reading environment override
(NFC)
Create a helper function for reading reproducer overrides from
environment variables.
The file was modifiedlldb/source/Utility/Reproducer.cpp
Commit c378e52cb9d1197bd828008ffdeaf3cebdca1506 by arsenm2
Set some fast math attributes in setFunctionAttributes
This will provide a more consistent view to codegen for these
attributes. The current system is somewhat awkward, and the fields in
TargetOptions are reset based on the command line flag if the attribute
isn't set. By forcing these attributes with the flag, there can never be
an inconsistency in the behavior if code directly inspects the attribute
on the function without considering the command line flags.
The file was modifiedllvm/include/llvm/CodeGen/CommandFlags.inc
The file was modifiedllvm/lib/Target/TargetMachine.cpp
Commit 066e817b421e8502a72735988e14713940517aaa by Jonas Devlieghere
[lldb/Reproducers] Add a flag to always generating a reproducer
Add a flag which always generates a reproducer when normally it would be
discarded. This is meant for testing purposes to capture a debugger
session without modification the session itself.
The file was modifiedlldb/include/lldb/API/SBReproducer.h
The file was modifiedlldb/source/Utility/Reproducer.cpp
The file was modifiedlldb/tools/driver/Options.td
The file was modifiedlldb/source/API/SBReproducer.cpp
The file was modifiedlldb/test/Shell/Reproducer/TestDriverOptions.test
The file was modifiedlldb/include/lldb/Utility/Reproducer.h
The file was modifiedlldb/tools/driver/Driver.cpp