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 <rich...@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@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@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@lists.llvm.org >>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >>> >> >> >> _______________________________________________ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >> >> >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits