From: Rafael Espindola Date: Fri, 23 Aug 2013 21:49:00 +0000 (+0000) Subject: Don't imply -flto with -O4. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3b0f62b8c05131df90ca7c9fe054c6c960594e4b;p=clang Don't imply -flto with -O4. We now saturate at -O3. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@189149 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/docs/ReleaseNotes.rst b/docs/ReleaseNotes.rst index 601f56654d..8dd26faab9 100644 --- a/docs/ReleaseNotes.rst +++ b/docs/ReleaseNotes.rst @@ -59,6 +59,8 @@ about them. The improvements since the 3.3 release include: New Compiler Flags ------------------ +- Clang no longer special cases -O4 to enable lto. Explicitly pass -flto to + enable it. - ... C Language Changes in Clang diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp index 09da30d2bc..a309625ac4 100644 --- a/lib/Driver/Driver.cpp +++ b/lib/Driver/Driver.cpp @@ -1359,10 +1359,6 @@ bool Driver::IsUsingLTO(const ArgList &Args) const { if (Args.hasFlag(options::OPT_flto, options::OPT_fno_lto, false)) return true; - // Check for -O4. - if (const Arg *A = Args.getLastArg(options::OPT_O_Group)) - return A->getOption().matches(options::OPT_O4); - return false; } diff --git a/test/Driver/clang_f_opts.c b/test/Driver/clang_f_opts.c index e1005d713a..52db4a2d20 100644 --- a/test/Driver/clang_f_opts.c +++ b/test/Driver/clang_f_opts.c @@ -56,7 +56,6 @@ // RUN: %clang -### -S -O2 %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s // RUN: %clang -### -S -Os %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s // RUN: %clang -### -S -O3 %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s -// RUN: %clang -### -S -O4 %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s // RUN: %clang -### -S -fno-vectorize -O3 %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s // RUN: %clang -### -S -O1 -fvectorize %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s // RUN: %clang -### -S -Ofast %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s @@ -96,3 +95,6 @@ // RUN: %clang -### -S -fpascal-strings -mno-pascal-strings %s 2>&1 | FileCheck -check-prefix=CHECK-NO-M-PASCAL-STRINGS %s // CHECK-NO-M-PASCAL-STRINGS-NOT: "-fpascal-strings" + +// RUN: %clang -### -S -O4 %s 2>&1 | FileCheck -check-prefix=CHECK-MAX-O %s +// CHECK-MAX-O: -O3 diff --git a/test/Driver/emit-llvm.c b/test/Driver/emit-llvm.c deleted file mode 100644 index 76ea05926c..0000000000 --- a/test/Driver/emit-llvm.c +++ /dev/null @@ -1,10 +0,0 @@ -// Check that -O4 is only honored as the effective -O option. -// clang/loader problem - -// RUN: %clang -ccc-print-phases -c -O4 -O0 %s 2> %t -// RUN: FileCheck --check-prefix=O4_AND_O0 %s < %t - -// O4_AND_O0: 0: input, "{{.*}}", c -// O4_AND_O0: 1: preprocessor, {0}, cpp-output -// O4_AND_O0: 2: compiler, {1}, assembler -// O4_AND_O0: 3: assembler, {2}, object diff --git a/test/Driver/lto.c b/test/Driver/lto.c index 4f7fd79f24..511c19b578 100644 --- a/test/Driver/lto.c +++ b/test/Driver/lto.c @@ -1,8 +1,6 @@ -// -flto and -O4 both cause a switch to llvm-bc object files. +// -flto causes a switch to llvm-bc object files. // RUN: %clang -ccc-print-phases -c %s -flto 2> %t.log // RUN: grep '2: compiler, {1}, lto-bc' %t.log -// RUN: %clang -ccc-print-phases -c %s -O4 2> %t.log -// RUN: grep '2: compiler, {1}, lto-bc' %t.log // RUN: %clang -ccc-print-phases %s -flto 2> %t.log // RUN: grep '0: input, ".*lto.c", c' %t.log