Fixes due to upstream changes.
I'm also worry if we should canonicalize shift+and to icmp+select
I'm not sure what impact this will have in IR, but you could try to write transforms like this in instcombine and see if that exposes other problems:
Thanks for looking to improve our test coverage here! However, precommit CI looks to be failing:
******************** Failed Tests (1): Clang :: CodeGenCXX/weak-init.cpp
I pasted the wrong diff. sorry!
I have one doubt about the memory_order? It's not related to this patch. Are they implemented in codegen? I can be sure the codegen of the hint clause for atomic construct is not implemented. There was one list in clang to track the openmp status. They marked hint clause for atomic construct as done, but the link PR only has frontend support.
Seems like there's no fractional LMULs tested by this patch? Does this suggest we should add some more test coverage?
Well, I would, but I could not find an example in tree of what a fractional LMUL looks like in IR. (Probably just because I don't know what syntax looks like). If you give me an example, I can take it from there.
I am not an expect in MLIR attributes, so I will leave the review for other expects. The results by this patch LG. @shraiysh Where can I get the information of RecursiveSideEffects? Can you share one link?
ping. Do we have plans to support the colorful keyword for the diag messages for LLVM Flang?
- If the compiler ever wants to support alignof as an extension in C++03, we'll need coordination between the library and the compiler.
That could be avoided by checking for #if defined(_LIBCPP_CXX03_LANG) && !__has_keyword(alignof) instead of just #ifdef _LIBCPP_CXX03_LANG.
- This is technically a breaking change for C++03 users because they are allowed to use alignof as a name, and we're not allowed to define identifiers outside of our namespace. Concretely, I do suspect this may break some C-first codebases that try to be clever.
C++03 in libc++ is more a crutch than anything else at this point. Users are also allowed to #define a lot of names in C++03 that we use in the library and are only part of C++11.
@klausler Is there any possibility that these init can be folded elsewhere to skip these complicated checks?
Address all the comments.
Changed GetPluginNameStatic to "PE-COFF", and rebased onto main.
Closing in favor of https://reviews.llvm.org/D125611.
This patch probably requires a proper test case, but I'm not sure where to put it. Some guidance from reviewers would be really helpful.