Tue, Jun 30
Mon, Jun 29
Thu, Jun 11
Jun 5 2020
Jun 2 2020
Jun 1 2020
- revert lld change
This seems wrong for mingw, so check with @mstorsjo.
May 23 2020
To restate what I know, here is what I think is going on:
- VC++ used to have a constexpr constructor compiler bug.
- The MSVC STL worked around it in std::atomic, this was tracked by the internal number VSO-406237
- C1XX fixed the constexpr bug
- The MSVC STL removed the work around in this github pull request: https://github.com/microsoft/STL/issues/336 / diff https://github.com/microsoft/STL/pull/390/commits/92d1e1f4d9b2c0c52b145adb598f0e27ff0203d2
May 21 2020
I guess I would prefer not to add .drectve support for this unless there is a use case for it. It is a somewhat fragile interface.
May 20 2020
IMO there is a pretty clear performance use case for this mode of operation, and it seems to me that you have addressed @rsmith's feedback. Please wait a few days to see if he has more to add, but otherwise, feel free to land this after Friday.
After looking at the code more, I'm more convinced that your fix is in the right place.
I don't have Cygwin anymore. IMO your code change seems low risk for cygwin, although the test could always fail with Cygwin Python, but IMO it's not worth worrying about.
Personally, I support this. I never liked the magic ld. prefixing. If we want a way to select a proprietary linker, it seems reasonable to ask the user to name the complete binary basename (ld.lld, lld, ld64, myld, etc). The driver shouldn't force the linker to use some special executable naming scheme.
I would like to register a small complaint that this script even exists in the first place. LLVM uses CMake. It's not OK for contributors to add their own ad-hoc shell script build systems and then impose the costs of maintaining them on other contributors. However, on the other hand, I understand what this script is trying to do, and do not have concrete suggestions on how to replace it. My only request is that the team that maintains it remains proactive about finding and fixing these problems.
May 19 2020
Thanks for the fix, I agree with Adrian's feedback. @amccarth, can you take over the review? I will remove myself, thanks.
The code change looks correct, but the test still needs to be updated. I'll go ahead and mark it accepted, but please remember to do that when landing this.
@hans is the resident dllexport expert at this moment.
May 18 2020
@vsapsai @bruno The use case is distributed compilation. I am unfamiliar with the changes in question, but essentially, if every input to clang is rooted in /Users/foo and the build works there, we should be able to move it all to /Users/bar, change directories, and the build should still work. It seems that this doesn't work for header maps, but I haven't reviewed the code change or test and know nothing else about this feature.
For more context: https://crbug.com/1056174
I'd be fine going back to the behavior from before.
I think this looks good and @zequanwu has addressed the concerns of other reviewers. Please wait until Wednesday before pushing in case they raise other concerns.
I will take a look and try to reland this, since I requested the assert.
May 15 2020
May 14 2020
lgtm, modulo ifdef adjustment
Thanks! I measured time and memory usage on a particular binary, and this change had no measurable effect, which is good.
May 13 2020
Hopefully rG409274274 addresses the GCC warnings. I didn't get a chance to locally repro and confirm that the fix works.
- Add logic to clear global tpi source lists
- Remove check for type server PDB age
I have some surface level code style comments, please address those and land this if you agree.
After this lands, can you follow this up by migrating the sanitizer passes to using the attribute instead of using empty inline asm blobs? Send the patch to @vitalybuka. This is the code I'm thinking of:
... and any similar uses.
Arthur recently went through the process of refining a diagnostic, so he should be able to help guide you in this if you have more questions.
Overall, this looks good to me, but I'd like to ask @craig.topper for an opinion. His area of expertise is the x86 backend.
rnk@ mentioned to me something about inlining and symbolization under the new pass manager, any links to that so I can put it in the description?
May 12 2020
Grepping for this shows that it turns up in all the other top-level CMakeLists.txt. Sigh, duplication. lgtm.
- Fix tests, add tests, fix naming
This next update fixes the variable naming issues, test failures, and adds a PCH test. It should be ready for review.
May 11 2020
May 9 2020
Some copy editing comments, but I agree with the semantics: From the IR perspective, it is better to think of argument stack memory as belonging to the callee. A byval argument has more in common with a local static alloca than a passed in pointer.
Needs a test.
May 8 2020
Speaking of which, @aganea, since you are using clang to compile now, you should try adding -Xclang -debug-info-kind=constructor if you haven't already. It greatly reduces the amount of duplicate type info that clang emits.
We were discussing about that today. Is there any drawback for doing so?