r329300 - Disable -fmerge-all-constants as default.
Manoj Gupta via cfe-commits
cfe-commits at lists.llvm.org
Thu Apr 5 14:48:11 PDT 2018
Thanks Richard,
I was wondering how a Clang change can break the Backend tests given that
the tests are all pre-checked IR files.
Failing Tests (7):
LLVM :: CodeGen/Mips/Fast-ISel/fastalloca.ll
LLVM :: CodeGen/Mips/Fast-ISel/fastcc-miss.ll
LLVM :: CodeGen/Mips/Fast-ISel/memtest1.ll
LLVM :: CodeGen/Mips/Fast-ISel/mul1.ll
LLVM :: CodeGen/Mips/Fast-ISel/sel1.ll
LLVM :: CodeGen/Mips/call-optimization.ll
LLVM :: DebugInfo/Mips/delay-slot.ll
On Thu, Apr 5, 2018 at 2:45 PM Richard Smith <richard at metafoo.co.uk> wrote:
> MipsFastISel::fastLowerArguments looks very broken and is likely the
> culprit here:
>
> const ArrayRef<MCPhysReg> GPR32ArgRegs = {Mips::A0, Mips::A1, Mips::A2,
> Mips::A3};
> const ArrayRef<MCPhysReg> FGR32ArgRegs = {Mips::F12, Mips::F14};
> const ArrayRef<MCPhysReg> AFGR64ArgRegs = {Mips::D6, Mips::D7};
>
> These are dangling ArrayRefs referring to already-destroyed temporaries.
>
> On 5 April 2018 at 14:40, Galina Kistanova via cfe-commits <
> cfe-commits at lists.llvm.org> wrote:
>
>> Hello Manoj,
>>
>> Looks like this commit broke tests at couple of our builders:
>> r329300
>> http://lab.llvm.org:8011/builders/clang-with-thin-lto-ubuntu/builds/9600
>>
>> Few tests failed:
>> . . .
>> Failing Tests (7):
>> LLVM :: CodeGen/Mips/Fast-ISel/fastalloca.ll
>> LLVM :: CodeGen/Mips/Fast-ISel/fastcc-miss.ll
>> LLVM :: CodeGen/Mips/Fast-ISel/memtest1.ll
>> LLVM :: CodeGen/Mips/Fast-ISel/mul1.ll
>> LLVM :: CodeGen/Mips/Fast-ISel/sel1.ll
>> LLVM :: CodeGen/Mips/call-optimization.ll
>> LLVM :: DebugInfo/Mips/delay-slot.ll
>>
>> Previous revision:
>> http://lab.llvm.org:8011/builders/clang-with-thin-lto-ubuntu/builds/9602
>>
>> Also another builder is affected:
>> http://lab.llvm.org:8011/builders/clang-with-lto-ubuntu
>>
>> Both builders were red and did not send notifications.
>>
>> Please have a look?
>>
>> Thanks
>>
>> Galina
>>
>> On Thu, Apr 5, 2018 at 8:29 AM, Manoj Gupta via cfe-commits <
>> cfe-commits at lists.llvm.org> wrote:
>>
>>> Author: manojgupta
>>> Date: Thu Apr 5 08:29:52 2018
>>> New Revision: 329300
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=329300&view=rev
>>> Log:
>>> Disable -fmerge-all-constants as default.
>>>
>>> Summary:
>>> "-fmerge-all-constants" is a non-conforming optimization and should not
>>> be the default. It is also causing miscompiles when building Linux
>>> Kernel (https://lkml.org/lkml/2018/3/20/872).
>>>
>>> Fixes PR18538.
>>>
>>> Reviewers: rjmccall, rsmith, chandlerc
>>>
>>> Reviewed By: rsmith, chandlerc
>>>
>>> Subscribers: srhines, cfe-commits
>>>
>>> Differential Revision: https://reviews.llvm.org/D45289
>>>
>>> Modified:
>>> cfe/trunk/include/clang/Driver/Options.td
>>> cfe/trunk/lib/AST/ExprConstant.cpp
>>> cfe/trunk/lib/Driver/ToolChains/Clang.cpp
>>> cfe/trunk/lib/Frontend/CompilerInvocation.cpp
>>> cfe/trunk/test/CodeGen/array-init.c
>>> cfe/trunk/test/CodeGen/decl.c
>>> cfe/trunk/test/CodeGenCXX/const-init-cxx11.cpp
>>> cfe/trunk/test/CodeGenCXX/cxx0x-initializer-references.cpp
>>> cfe/trunk/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp
>>> cfe/trunk/test/CodeGenObjCXX/arc-cxx11-init-list.mm
>>> cfe/trunk/test/Driver/clang_f_opts.c
>>>
>>> Modified: cfe/trunk/include/clang/Driver/Options.td
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=329300&r1=329299&r2=329300&view=diff
>>>
>>> ==============================================================================
>>> --- cfe/trunk/include/clang/Driver/Options.td (original)
>>> +++ cfe/trunk/include/clang/Driver/Options.td Thu Apr 5 08:29:52 2018
>>> @@ -1133,7 +1133,8 @@ def fthinlto_index_EQ : Joined<["-"], "f
>>> HelpText<"Perform ThinLTO importing using provided function summary
>>> index">;
>>> def fmacro_backtrace_limit_EQ : Joined<["-"],
>>> "fmacro-backtrace-limit=">,
>>> Group<f_Group>, Flags<[DriverOption,
>>> CoreOption]>;
>>> -def fmerge_all_constants : Flag<["-"], "fmerge-all-constants">,
>>> Group<f_Group>;
>>> +def fmerge_all_constants : Flag<["-"], "fmerge-all-constants">,
>>> Group<f_Group>,
>>> + Flags<[CC1Option]>, HelpText<"Allow merging of constants">;
>>> def fmessage_length_EQ : Joined<["-"], "fmessage-length=">,
>>> Group<f_Group>;
>>> def fms_extensions : Flag<["-"], "fms-extensions">, Group<f_Group>,
>>> Flags<[CC1Option, CoreOption]>,
>>> HelpText<"Accept some non-standard constructs supported by the
>>> Microsoft compiler">;
>>> @@ -1282,7 +1283,7 @@ def fveclib : Joined<["-"], "fveclib=">,
>>> def fno_lax_vector_conversions : Flag<["-"],
>>> "fno-lax-vector-conversions">, Group<f_Group>,
>>> HelpText<"Disallow implicit conversions between vectors with a
>>> different number of elements or different element types">,
>>> Flags<[CC1Option]>;
>>> def fno_merge_all_constants : Flag<["-"], "fno-merge-all-constants">,
>>> Group<f_Group>,
>>> - Flags<[CC1Option]>, HelpText<"Disallow merging of constants">;
>>> + HelpText<"Disallow merging of constants">;
>>> def fno_modules : Flag <["-"], "fno-modules">, Group<f_Group>,
>>> Flags<[DriverOption]>;
>>> def fno_implicit_module_maps : Flag <["-"],
>>> "fno-implicit-module-maps">, Group<f_Group>,
>>>
>>> Modified: cfe/trunk/lib/AST/ExprConstant.cpp
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ExprConstant.cpp?rev=329300&r1=329299&r2=329300&view=diff
>>>
>>> ==============================================================================
>>> --- cfe/trunk/lib/AST/ExprConstant.cpp (original)
>>> +++ cfe/trunk/lib/AST/ExprConstant.cpp Thu Apr 5 08:29:52 2018
>>> @@ -8596,9 +8596,6 @@ bool IntExprEvaluator::VisitBinaryOperat
>>> (LHSValue.Base && isZeroSized(RHSValue)))
>>> return Error(E);
>>> // Pointers with different bases cannot represent the same
>>> object.
>>> - // (Note that clang defaults to -fmerge-all-constants, which can
>>> - // lead to inconsistent results for comparisons involving the
>>> address
>>> - // of a constant; this generally doesn't matter in practice.)
>>> return Success(E->getOpcode() == BO_NE, E);
>>> }
>>>
>>>
>>> Modified: cfe/trunk/lib/Driver/ToolChains/Clang.cpp
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Clang.cpp?rev=329300&r1=329299&r2=329300&view=diff
>>>
>>> ==============================================================================
>>> --- cfe/trunk/lib/Driver/ToolChains/Clang.cpp (original)
>>> +++ cfe/trunk/lib/Driver/ToolChains/Clang.cpp Thu Apr 5 08:29:52 2018
>>> @@ -3361,9 +3361,9 @@ void Clang::ConstructJob(Compilation &C,
>>>
>>> Args.AddLastArg(CmdArgs, options::OPT_fveclib);
>>>
>>> - if (!Args.hasFlag(options::OPT_fmerge_all_constants,
>>> - options::OPT_fno_merge_all_constants))
>>> - CmdArgs.push_back("-fno-merge-all-constants");
>>> + if (Args.hasFlag(options::OPT_fmerge_all_constants,
>>> + options::OPT_fno_merge_all_constants, false))
>>> + CmdArgs.push_back("-fmerge-all-constants");
>>>
>>> // LLVM Code Generator Options.
>>>
>>>
>>> Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInvocation.cpp?rev=329300&r1=329299&r2=329300&view=diff
>>>
>>> ==============================================================================
>>> --- cfe/trunk/lib/Frontend/CompilerInvocation.cpp (original)
>>> +++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp Thu Apr 5 08:29:52
>>> 2018
>>> @@ -605,7 +605,7 @@ static bool ParseCodeGenArgs(CodeGenOpti
>>> Args.hasFlag(OPT_ffine_grained_bitfield_accesses,
>>> OPT_fno_fine_grained_bitfield_accesses, false);
>>> Opts.DwarfDebugFlags = Args.getLastArgValue(OPT_dwarf_debug_flags);
>>> - Opts.MergeAllConstants = !Args.hasArg(OPT_fno_merge_all_constants);
>>> + Opts.MergeAllConstants = Args.hasArg(OPT_fmerge_all_constants);
>>> Opts.NoCommon = Args.hasArg(OPT_fno_common);
>>> Opts.NoImplicitFloat = Args.hasArg(OPT_no_implicit_float);
>>> Opts.OptimizeSize = getOptimizationLevelSize(Args);
>>>
>>> Modified: cfe/trunk/test/CodeGen/array-init.c
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/array-init.c?rev=329300&r1=329299&r2=329300&view=diff
>>>
>>> ==============================================================================
>>> --- cfe/trunk/test/CodeGen/array-init.c (original)
>>> +++ cfe/trunk/test/CodeGen/array-init.c Thu Apr 5 08:29:52 2018
>>> @@ -1,8 +1,11 @@
>>> -// RUN: %clang_cc1 %s -O0 -triple x86_64-unknown-linux-gnu -emit-llvm
>>> -o - | FileCheck %s
>>> +// RUN: %clang_cc1 %s -O0 -triple x86_64-unknown-linux-gnu -emit-llvm
>>> -o - | FileCheck -check-prefix=CHECK-NO-MERGE-CONSTANTS %s
>>> +// RUN: %clang_cc1 %s -O0 -triple x86_64-unknown-linux-gnu
>>> -fmerge-all-constants -emit-llvm -o - | FileCheck
>>> -check-prefix=CHECK-MERGE-CONSTANTS %s
>>>
>>> -// CHECK: @{{.*}}.a1 = internal constant [5 x i32] [i32 0, i32 1, i32
>>> 2, i32 0, i32 0]
>>> -// CHECK: @{{.*}}.a2 = internal constant [5 x i32] zeroinitializer
>>> -// CHECK: @{{.*}}.a3 = internal constant [5 x i32] zeroinitializer
>>> +// CHECK-NO-MERGE-CONSTANTS: @{{.*}}.a1 = private unnamed_addr constant
>>> [5 x i32] [i32 0, i32 1, i32 2, i32 0, i32 0]
>>> +
>>> +// CHECK-MERGE-CONSTANTS: @{{.*}}.a1 = internal constant [5 x i32] [i32
>>> 0, i32 1, i32 2, i32 0, i32 0]
>>> +// CHECK-MERGE-CONSTANTS: @{{.*}}.a2 = internal constant [5 x i32]
>>> zeroinitializer
>>> +// CHECK-MERGE-CONSTANTS: @{{.*}}.a3 = internal constant [5 x i32]
>>> zeroinitializer
>>>
>>> void testConstArrayInits(void)
>>> {
>>>
>>> Modified: cfe/trunk/test/CodeGen/decl.c
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/decl.c?rev=329300&r1=329299&r2=329300&view=diff
>>>
>>> ==============================================================================
>>> --- cfe/trunk/test/CodeGen/decl.c (original)
>>> +++ cfe/trunk/test/CodeGen/decl.c Thu Apr 5 08:29:52 2018
>>> @@ -1,4 +1,4 @@
>>> -// RUN: %clang_cc1 -w -emit-llvm < %s | FileCheck %s
>>> +// RUN: %clang_cc1 -w -fmerge-all-constants -emit-llvm < %s | FileCheck
>>> %s
>>>
>>> // CHECK: @test1.x = internal constant [12 x i32] [i32 1
>>> // CHECK: @test2.x = private unnamed_addr constant [13 x i32] [i32 1,
>>>
>>> Modified: cfe/trunk/test/CodeGenCXX/const-init-cxx11.cpp
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/const-init-cxx11.cpp?rev=329300&r1=329299&r2=329300&view=diff
>>>
>>> ==============================================================================
>>> --- cfe/trunk/test/CodeGenCXX/const-init-cxx11.cpp (original)
>>> +++ cfe/trunk/test/CodeGenCXX/const-init-cxx11.cpp Thu Apr 5 08:29:52
>>> 2018
>>> @@ -1,4 +1,4 @@
>>> -// RUN: %clang_cc1 -w -triple x86_64-elf-gnu -emit-llvm -o - %s
>>> -std=c++11 | FileCheck %s
>>> +// RUN: %clang_cc1 -w -fmerge-all-constants -triple x86_64-elf-gnu
>>> -emit-llvm -o - %s -std=c++11 | FileCheck %s
>>>
>>> // FIXME: The padding in all these objects should be zero-initialized.
>>> namespace StructUnion {
>>>
>>> Modified: cfe/trunk/test/CodeGenCXX/cxx0x-initializer-references.cpp
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/cxx0x-initializer-references.cpp?rev=329300&r1=329299&r2=329300&view=diff
>>>
>>> ==============================================================================
>>> --- cfe/trunk/test/CodeGenCXX/cxx0x-initializer-references.cpp (original)
>>> +++ cfe/trunk/test/CodeGenCXX/cxx0x-initializer-references.cpp Thu Apr
>>> 5 08:29:52 2018
>>> @@ -1,4 +1,4 @@
>>> -// RUN: %clang_cc1 -std=c++11 -S -triple armv7-none-eabi -emit-llvm -o
>>> - %s | FileCheck %s
>>> +// RUN: %clang_cc1 -std=c++11 -S -triple armv7-none-eabi
>>> -fmerge-all-constants -emit-llvm -o - %s | FileCheck %s
>>>
>>> namespace reference {
>>> struct A {
>>>
>>> Modified:
>>> cfe/trunk/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp?rev=329300&r1=329299&r2=329300&view=diff
>>>
>>> ==============================================================================
>>> --- cfe/trunk/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp
>>> (original)
>>> +++ cfe/trunk/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp
>>> Thu Apr 5 08:29:52 2018
>>> @@ -1,5 +1,5 @@
>>> -// RUN: %clang_cc1 -std=c++11 -triple x86_64-none-linux-gnu -emit-llvm
>>> -o - %s | FileCheck -check-prefixes=X86,CHECK %s
>>> -// RUN: %clang_cc1 -std=c++11 -triple amdgcn-amd-amdhsa -DNO_TLS
>>> -emit-llvm -o - %s | FileCheck -check-prefixes=AMDGCN,CHECK %s
>>> +// RUN: %clang_cc1 -std=c++11 -triple x86_64-none-linux-gnu
>>> -fmerge-all-constants -emit-llvm -o - %s | FileCheck
>>> -check-prefixes=X86,CHECK %s
>>> +// RUN: %clang_cc1 -std=c++11 -triple amdgcn-amd-amdhsa -DNO_TLS
>>> -fmerge-all-constants -emit-llvm -o - %s | FileCheck
>>> -check-prefixes=AMDGCN,CHECK %s
>>>
>>> namespace std {
>>> typedef decltype(sizeof(int)) size_t;
>>>
>>> Modified: cfe/trunk/test/CodeGenObjCXX/arc-cxx11-init-list.mm
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-cxx11-init-list.mm?rev=329300&r1=329299&r2=329300&view=diff
>>>
>>> ==============================================================================
>>> --- cfe/trunk/test/CodeGenObjCXX/arc-cxx11-init-list.mm (original)
>>> +++ cfe/trunk/test/CodeGenObjCXX/arc-cxx11-init-list.mm Thu Apr 5
>>> 08:29:52 2018
>>> @@ -1,4 +1,4 @@
>>> -// RUN: %clang_cc1 -triple armv7-ios5.0 -std=c++11 -fobjc-arc -Os
>>> -emit-llvm -o - %s | FileCheck %s
>>> +// RUN: %clang_cc1 -triple armv7-ios5.0 -std=c++11
>>> -fmerge-all-constants -fobjc-arc -Os -emit-llvm -o - %s | FileCheck %s
>>>
>>> // CHECK: @[[STR0:.*]] = private unnamed_addr constant [5 x i8]
>>> c"str0\00", section "__TEXT,__cstring,cstring_literals"
>>> // CHECK: @[[UNNAMED_CFSTRING0:.*]] = private global
>>> %struct.__NSConstantString_tag { i32* getelementptr inbounds ([0 x i32], [0
>>> x i32]* @__CFConstantStringClassReference, i32 0, i32 0), i32 1992, i8*
>>> getelementptr inbounds ([5 x i8], [5 x i8]* @[[STR0]], i32 0, i32 0), i32 4
>>> }, section "__DATA,__cfstring"
>>>
>>> Modified: cfe/trunk/test/Driver/clang_f_opts.c
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/clang_f_opts.c?rev=329300&r1=329299&r2=329300&view=diff
>>>
>>> ==============================================================================
>>> --- cfe/trunk/test/Driver/clang_f_opts.c (original)
>>> +++ cfe/trunk/test/Driver/clang_f_opts.c Thu Apr 5 08:29:52 2018
>>> @@ -276,6 +276,7 @@
>>> // RUN: -fno-inline-small-functions -finline-small-functions
>>> \
>>> // RUN: -fno-fat-lto-objects -ffat-lto-objects
>>> \
>>> // RUN: -fno-merge-constants -fmerge-constants
>>> \
>>> +// RUN: -fno-merge-all-constants -fmerge-all-constants
>>> \
>>> // RUN: -fno-caller-saves -fcaller-saves
>>> \
>>> // RUN: -fno-reorder-blocks -freorder-blocks
>>> \
>>> // RUN: -fno-schedule-insns2 -fschedule-insns2
>>> \
>>> @@ -522,3 +523,10 @@
>>> // RUN: %clang -### -S -fno-discard-value-names %s 2>&1 | FileCheck
>>> -check-prefix=CHECK-NO-DISCARD-NAMES %s
>>> // CHECK-DISCARD-NAMES: "-discard-value-names"
>>> // CHECK-NO-DISCARD-NAMES-NOT: "-discard-value-names"
>>> +//
>>> +// RUN: %clang -### -S -fmerge-all-constants %s 2>&1 | FileCheck
>>> -check-prefix=CHECK-MERGE-ALL-CONSTANTS %s
>>> +// RUN: %clang -### -S -fno-merge-all-constants %s 2>&1 | FileCheck
>>> -check-prefix=CHECK-NO-MERGE-ALL-CONSTANTS %s
>>> +// RUN: %clang -### -S -fmerge-all-constants -fno-merge-all-constants
>>> %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MERGE-ALL-CONSTANTS %s
>>> +// RUN: %clang -### -S -fno-merge-all-constants -fmerge-all-constants
>>> %s 2>&1 | FileCheck -check-prefix=CHECK-MERGE-ALL-CONSTANTS %s
>>> +// CHECK-NO-MERGE-ALL-CONSTANTS-NOT: "-fmerge-all-constants"
>>> +// CHECK-MERGE-ALL-CONSTANTS: "-fmerge-all-constants"
>>>
>>>
>>> _______________________________________________
>>> cfe-commits mailing list
>>> cfe-commits at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>>
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20180405/7ce68774/attachment-0001.html>
More information about the cfe-commits
mailing list