RFR: JDK-8075176 DISABLED_WARNINGS caused C++ compiler flags to get lost
Tim Bell
tim.bell at oracle.com
Tue Mar 17 14:14:45 UTC 2015
Magnus:
Looks good to me as well.
Tim
On 03/17/15 06:15, Erik Joelsson wrote:
> Looks good. Nice to find the root cause of this.
>
> /Erik
>
> On 2015-03-17 13:58, 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