That muls requirement that Rd and Rm be the same is dumb.
Would be nice to clang-format those lines, but its no worse than before.
I got it. I have hard-coded paths in CHECK-lines so these tests are passed on my machine but not on other. Thank you Kareem!
While I love this direction (the original version really was an unintelligible pile of code), I really think that this change may be taking on too much. Why not split it up first and do nothing else. We could do the MS ABI implementation in a subsequent change. This would improve the code and would not be gated on the MS ABI changes.
I agree this review is taking on too much, it started out much smaller and I tried to avoid expanding it, but in the end I had three options:
A) Regress and remove all support for MSVC, this would break the windows build. (at least in exception.cpp and new.cpp).
B) Implement incorrect versions of support/runtime/<header>_msvc.ipp based on w/e we currently have, just to keep Windows building.
C) Implement correct versions of support/runtime/<header>_msvc.ipp.
I choose (C) since I didn't want to regress Windows, or spend time implementing incorrect <header>_msvc.ipp versions.
However I'm willing to try and shrink this down if you think that would be better.
- nothing special, just went through some open comments and marked them as Done.
@aaron.ballman I am going to implement CppCore, Cert and Everything and test it on some projects and provide the results next week, to find out which one to set Default.
All encodings seem to be Thumb1, not just ARMv6M. LGTM. Thanks!
Amazing work, Dominic. That's what I wanted to test for long time. But, personally, I'm not happy with massive changes in tests.
- I don't think that we need to change run line for tests if they pass with both managers. These changes are pretty noisy,
- If Z3 is optional, we cannot enforce its usage.
- How testing will be performed without Z3?
TL;DR This broke lld.
I was trying to build an RPM for LLVM/Clang 4.0.0 RC1 toolchain and noticed issues, which at first looks a caused by this change.
With this change you are no more installing required shared libraries:
error: Failed dependencies:liblldCOFF.so.4()(64bit) is needed by external+llvm+4.0.0-cms-1-1.x86_64 liblldDriver.so.4()(64bit) is needed by external+llvm+4.0.0-cms-1-1.x86_64 liblldELF.so.4()(64bit) is needed by external+llvm+4.0.0-cms-1-1.x86_64
I checked CMake install logs and they were not listed as installed.
Looking at packages (thus installed) lld binary it depends on them.
- Further update is_llvm_target to is_omitted_target_lib. The former checks whether a component is part of a known target...
- Fix is_llvm_target's logic. Previously, it checked a component name (X86Utils, LanaiInstPrinter, so on) against fully qualified libnames (LLVMX86Utils, LLVMLanaiInstPrinter), which is incorrect. This is exactly the fix in D28869 by Chris.
Are you sure that this CONSTRUCTORS is trying to be a linker keyword? The nearby DATA_DATA is actually a macro expanded from http://src.illumos.org/source/xref/linux-master/include/asm-generic/vmlinux.lds.h#205
Is the CONSTRUCTORS still in file after it has been preprocessed? (I'm guessing so since otherwise this patch wouldn't fix the build, but just wanted to be sure).
Remember to keep in mind that these linker scripts all get preprocessed by the C preprocessor, so remember to look at the preprocessed linker script instead of the original source.
Are all the changes here related to the extension/truncation support, for instance the changes to test/Analysis/malloc.c? Can you move misc. cleanup changes to another review?
Do you think you could upload the patch omitting all of the test case changes for now? Maybe include one as an example but it seems to be just adding %z3_cc1 so we don't need to see all of them right now.
::sigh:: *Actually* remove the unnecessary loop-simplify runs.