RFR: JDK-8075176 DISABLED_WARNINGS caused C++ compiler flags to get lost

Kumar Srinivasan kumar.x.srinivasan at oracle.com
Tue Mar 17 14:10:05 UTC 2015


Hi Magnus,

*||****make/common/NativeCompilation.gmk*
Typo: s/explicitely/explicitly/

I don't quite understand the changes ;) but Mr ErikJ has done the 
honors. :-)

Thanks
Kumar


On 3/17/2015 5:58 AM, Magnus Ihse Bursie wrote:
> It turned out that the fix for JDK-8074796 (Disabling warnings on 
> clang triggers compiler bug for libunpack) did not address the core 
> issue.
>
> In fact, there was no compiler bug in clang. (Surprise! :-)) Instead, 
> what happened was that the makefile changes that turned on the warning 
> flags, also affected other flags sent to the compiler. This happened 
> on all toolchains, but was first noticed only for clang builds.
>
> More precisely, due to the convoluted logic in SetupNativeCompilation, 
> the value of "CFLAGS_release := -DPRODUCT" which was set in libunpack 
> should have been copied by default to CXXFLAGS_release, so it could be 
> used when compiling C++ code. However, if there are additional CXX 
> flags set, then this copy does not happen. Due to the exact placement 
> of the DISABLED_WARINGS flags code in SetupNativeCompilation, the CXX 
> flags turned out to be non-empty when the "if CXX flags not set, then 
> copy C flags by default" was executed. Hence, CFLAGS_release was not 
> transferred to CXXFLAGS_release, and -DPRODUCT was lost when compiling 
> the C++ files.
>
> One could certainly argue that our entire handling of C flags vs C++ 
> flags is not ideal. Hopefully, we can address that in the future, and 
> create a more robust model.
>
> For now, moving the code in SetupNativeCompilation will solve the 
> problems which was introduced with the new warning option. This will 
> also allow us to re-enable the warning statement for clang.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8075176
> WebRev: 
> http://cr.openjdk.java.net/~ihse/JDK-8075176-disabled-warnings-removed-extra-cflags/webrev.01
>
> /Magnus




More information about the build-dev mailing list