I probably won't have enough time to test this today.
This looks good to me. If you submit it now, I can cherry pick it and test later.
Feb 2 2019
Nov 15 2018
I probably won't have enough time to test this today.
Sep 19 2018
Sep 18 2018
Sep 11 2018
Make it a positive unit test. Create library to test from .s file.
Add a unit test case.
Sep 10 2018
Rui, could you help me creating a test?
All I have now is Android's link command for dex2oatds.
I don't know how to reduce that to an lld unit test.
Aug 22 2018
Aug 21 2018
I tested with clang-tidy test.cpp -- -c -Iinc -flto,
and found that in Driver.cpp:getTool Inputs has one action equal to
BackendJobClass (without -flto) or CompileJobClass (with -flto).
Aug 20 2018
Jun 29 2018
check dlerror() where it shouldn't be NULL
Added calls to dlerror() before other dl* functions.
Marco, latest patch does not change gcov_flush, which is also hidden in libgcov.
Android coverage test programs have depended on an earlier compiler-rt that did not hide gcov_flush.
If that's the only use case broken by recent change of compiler-rt, which hide gcov_flush,
I think it is okay to keep compiler-rt the same as it is now.
Adding a visible llvm_gcov_flush will allow Android coverage test program to use it and dump system .so profiling data,
from the main test program.
Keeping an hidden gcov_flush has the purpose that David mentioned earlier, to let each .so file dump its own profiling data.
Now keep __gcov_flush hidden as libgcov; add llvm_gcov_flush to call from outside of .so files.
Jun 26 2018
Jun 25 2018
@chh I had a chance to try out your proposed changes. It's not causing us any trouble. In fact, __gcov_flush() is not even used at all (at least in LLVM 5.0.1).. I can recompile llvm, compiler_rt and clang and re-run all the tests with __gcov_flush commented out! No problem.
I would suggest adding a bit more documentation to __gcov_flush(), thus describing what those "special cases" are...
__gcov_flush is only used if you actually call it (it's needed for example if you want to profile only part of your program).
In GCC, gcov_flush is not hidden, so perhaps we should do the same to keep the same behavior? I've also submitted https://reviews.llvm.org/D48538, which is making gcov_flush flush counters for all shared libraries (like GCC does, with the same caveat: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83879).
Jun 18 2018
May 22 2018
Only two minor suggestions. Everything looks fine. Thanks.
May 18 2018
Apr 30 2018
FYI, Android NDK has another use case in https://github.com/android-ndk/ndk/issues/680.
It would be nice to have clang-tidy recognize the response file.
Apr 18 2018
This change caused an assertion failure in ExprEngineCXX.cpp:
Apr 11 2018
Yes, calling __gcov_flush within .so files are different,
but it's a revert of https://reviews.llvm.org/D38124.
I think https://bugs.llvm.org/show_bug.cgi?id=27224
can be fixed by hiding only llvm_gcda_* functions,
without any change to __gcov_flush.
Apr 10 2018
If we use the unit test case, call __gcov_flush from the main function,
and dump static variables in GCDAProfiling.c, we can see that __gcov_flush
is resolved to the same copy for func.shared, func2.shared, and main.
However, when __gcov_flush is called from main and from f1_flush and f2_flush,
they use different copies of static variables defined in GCDAProfiling.c.
The "flush_fn_head" and its flush functions are different, so 3 calls of
__gcov_flush will flush to 3 different output files:
instrprof-dlopen-func.gcda instrprof-dlopen-func2.gcda instrprof-dlopen-dlclose-main.gcda
Apr 9 2018
Mar 26 2018
Mar 1 2018
Martin, thanks for finding this problem.
Please review/accept my new change if it passes your tests.
After this and D42999, the default emulated TLS mode should only be decided in
The clang driver will be fixed in https://reviews.llvm.org/D43965
I will upload a different fix soon.
We should set ExplicitEmulatedTLS only when -f[no-]emulated-tls flag is found at command line.
Any front-end should only pass the flag and let backend decide the default based on target.
Feb 28 2018
Feb 27 2018
This change produced a new error with LTO and AOSP ARM thumb code.
Please see a reduced test case at https://bugs.llvm.org/show_bug.cgi?id=36542
Feb 26 2018
Feb 13 2018
Feb 12 2018
Feb 7 2018
I don't think -fno-emulated-tls is used anywhere yet.
I should have not allowed that flag.
My original idea was to have only -femulated-tls for
targets like Android.
Feb 6 2018
Jan 31 2018
Jan 30 2018
Jan 29 2018
Jan 25 2018
Hi, I am trying to build Android with clang 7.0.
This change generates wrong inlined sprintf because Android bionic
used fortified version wrapper with attribute((always_inline)).
Oct 30 2017
Oct 11 2017
This change LGTM.
I added more comments in https://bugs.llvm.org/show_bug.cgi?id=34866.
Sep 26 2017
Sep 25 2017
Sep 21 2017
Sep 20 2017
Sep 18 2017
Please review https://reviews.llvm.org/D35743.
I uploaded there a new diff that should fix the spaces around & and && tokens.
Sep 15 2017
Thanks for this change.
Could you take a look of https://reviews.llvm.org/D35743 too?
Sep 6 2017
My original change in lib/Target/X86/X86ISelLowering.cpp
was part of https://reviews.llvm.org/D15134 to fix
calling convention bug of f128 type mentioned in
Sep 5 2017
Okay, I see the change in extract_store.ll now.
The checks were not reduced.
The test mode +mmx was changed to +sse,
and expected output of +sse2, +sse4.1, +avx were changed.
Sep 1 2017
I cannot get clang to crash with "clang -c -mno-mmx" and the given example.
Maybe I missed something?