Merge clang 7.0.1 and several follow-up changesMFC r341825:Upgrade our copies of clang, llvm, lld, lldb, compiler-rt and libc++ tothe upstream release_70 branch r348686 (effectively, 7.0.1 rc3).
Merge clang 7.0.1 and several follow-up changesMFC r341825:Upgrade our copies of clang, llvm, lld, lldb, compiler-rt and libc++ tothe upstream release_70 branch r348686 (effectively, 7.0.1 rc3). Therelease will follow very soon, but no more functional changes areexpected.Release notes for llvm, clang and lld 7.0.0 are available here:<http://releases.llvm.org/7.0.0/docs/ReleaseNotes.html><http://releases.llvm.org/7.0.0/tools/clang/docs/ReleaseNotes.html><http://releases.llvm.org/7.0.0/tools/lld/docs/ReleaseNotes.html>PR: 230240, 230355Relnotes: yesMFC r342123:Update clang, llvm, lld, lldb, compiler-rt and libc++ version number to7.0.1 release r349250. There were no functional changes since the 7.0.1rc3 import.PR: 230240, 230355Relnotes: yesr343429 | emaste | 2019-01-25 15:46:13 +0100 (Fri, 25 Jan 2019) | 16 linesclang: default to DWARF 4 as of FreeBSD 13FreeBSD previously defaulted to DWARF 2 because several tools (gdb,ctfconvert, etc.) did not support later versions. These have eitherbeen fixed or are deprecated.Note that gdb 6 still exists but has been moved out of $PATH into/usr/libexec and is intended only for use by crashinfo(8). The kernelbuild sets the DWARF version explicitly via -gdwarf2, so this shouldhave no effect there.PR: 234887 [exp-run]Reviewed by: markjSponsored by: The FreeBSD FoundationDifferential Revision: https://reviews.freebsd.org/D17930MFC r343916:Pull in r352607 from upstream llvm trunk (by Craig Topper): [X86] Add FPSW as a Def on some FP instructions that were missing it.Pull in r353141 from upstream llvm trunk (by Craig Topper): [X86] Connect the default fpsr and dirflag clobbers in inline assembly to the registers we have defined for them. Summary: We don't currently map these constraints to physical register numbers so they don't make it to the MachineIR representation of inline assembly. This could have problems for proper dependency tracking in the machine schedulers though I don't have a test case that shows that. Reviewers: rnk Reviewed By: rnk Subscribers: eraman, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D57641Pull in r353489 from upstream llvm trunk (by Craig Topper): [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/D57735These should fix a problem in clang 7.0 where it would sometimes emitlong double floating point instructions in a slightly wrong order,leading to failures in our libm tests. In particular, the cbrt_testtest case 'cbrtl_powl' and the trig_test test case 'reduction'.Also bump __FreeBSD_cc_version, to be able to detect this in our testsuite.Reported by: lwhsuPR: 234040Upstream PR: https://bugs.llvm.org/show_bug.cgi?id=40206MFC r344056:Pull in r339734 from upstream llvm trunk (by Eli Friedman): [ARM] Make PerformSHLSimplify add nodes to the DAG worklist correctly. Intentionally excluding nodes from the DAGCombine worklist is likely to lead to weird optimizations and infinite loops, so it's generally a bad idea. To avoid the infinite loops, fix DAGCombine to use the isDesirableToCommuteWithShift target hook before performing the transforms in question, and implement the target hook in the ARM backend disable the transforms in question. Fixes https://bugs.llvm.org/show_bug.cgi?id=38530 . (I don't have a reduced testcase for that bug. But we should have sufficient test coverage for PerformSHLSimplify given that we're not playing weird tricks with the worklist. I can try to bugpoint it if necessary, though.) Differential Revision: https://reviews.llvm.org/D50667This should fix a possible hang when compiling sys/dev/nxge/if_nxge.c(which exists now only in the stable/11 branch) for arm.
show more ...
Regenerate llvm tools manpages, and add one for llvm-pbdutil.
DIRDEPS_BUILD: Update dependencies.Sponsored by: Dell EMC Isilon
DIRDEPS_BUILD: Connect the new clang build.Sponsored by: EMC / Isilon Storage Division
Completely revamp the way llvm, clang and lldb are built.* Bootstrap llvm-tblgen and clang-tblgen with a minimal llvm static library, that has no other dependencies.* Roll up all separate llvm l
Completely revamp the way llvm, clang and lldb are built.* Bootstrap llvm-tblgen and clang-tblgen with a minimal llvm static library, that has no other dependencies.* Roll up all separate llvm libraries into one big static libllvm.* Similar for all separate clang and lldb static libraries.* For all these libraries, generate their .inc files only once.* Link all llvm tools (including extra) against the big libllvm.* Link clang and clang-format against the big libllvm and libclang.* Link lldb against the big libllvm, libclang and liblldb.N.B.: This is work in progress, some details may still be missing.It also heavily depends on bsd.*.mk's support for SRCS and DPSRCS withrelative pathnames, which apparently does not always work as expected.For building llvm, clang and lldb though, it seems to work just fine.The main idea behind this restructuring is maintainability and buildpeformance. The previous large number of very small libraries, eachwith their own generated files and dependencies was slow to traverseand hard to understand.Possible future improvements:* Only build certain targets, e.g. for most regular users having just one target will be fine. This will shave off some build time.* Building the big llvm, clang and lldb libraries as shared (private) libraries.* Adding other components from the LLVM project, such as lld.
Update build glue for clang and the llvm/clang extras.
DIRDEPS_BUILD: Update clang dependencies after r296417.Sponsored by: EMC / Isilon Storage Division
Regenerate llvm and clang manpages.
DIRDEPS_BUILD: Hookup CLANG_EXTRAS.Sponsored by: EMC / Isilon Storage Division
Merge ^/head r295544 through r295600.
Update Makefiles and other build glue for llvm/clang 3.7.0, as of trunkr238337.
Add the llvm-cov and llvm-profdata tools, when WITH_CLANG_EXTRAS isdefined. These help with processing coverage and profile data.