[clang] [Driver] Treat -O4 as -O3 in clang::getOptimizationLevel, which is called when building LTO link command (PR #216450)
Wael Yehia via cfe-commits
cfe-commits at lists.llvm.org
Fri Aug 14 20:18:14 PDT 2026
https://github.com/w2yehia created https://github.com/llvm/llvm-project/pull/216450
…
>From b507d69f37f6f8dc60de587dd08708c848c7ec64 Mon Sep 17 00:00:00 2001
From: Wael Yehia <wyehia at ca.ibm.com>
Date: Sat, 15 Aug 2026 00:59:29 +0000
Subject: [PATCH] treat -O4 as -O3 in clang::getOptimizationLevel, which is
called when building LTO link command
---
clang/lib/Frontend/CompilerInvocation.cpp | 2 +-
clang/test/Driver/lto.c | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp
index 256ae636ca9e6..8a72e3c386d56 100644
--- a/clang/lib/Frontend/CompilerInvocation.cpp
+++ b/clang/lib/Frontend/CompilerInvocation.cpp
@@ -2726,7 +2726,7 @@ unsigned clang::getOptimizationLevel(const ArgList &Args, InputKind IK,
if (A->getOption().matches(options::OPT_O0))
return 0;
- if (A->getOption().matches(options::OPT_Ofast))
+ if (A->getOption().matches(options::OPT_Ofast) || A->getOption().matches(options::OPT_O4))
return 3;
assert(A->getOption().matches(options::OPT_O));
diff --git a/clang/test/Driver/lto.c b/clang/test/Driver/lto.c
index c9ee2f9c26223..838eb74086375 100644
--- a/clang/test/Driver/lto.c
+++ b/clang/test/Driver/lto.c
@@ -66,6 +66,8 @@
// RUN: -fuse-ld=lld -flto -O3 -### 2>&1 | FileCheck --check-prefix=O3 %s
// RUN: %clang --target=x86_64-unknown-linux-gnu --sysroot=%S/Inputs/basic_cross_linux_tree %s \
// RUN: -fuse-ld=lld -flto -Ofast -### 2>&1 | FileCheck --check-prefix=O3 %s
+// RUN: %clang --target=x86_64-unknown-linux-gnu --sysroot=%S/Inputs/basic_cross_linux_tree %s \
+// RUN: -fuse-ld=lld -flto -O4 -### 2>&1 | FileCheck --check-prefix=O3 %s
// O1: -plugin-opt=O1
// O2: -plugin-opt=O2
More information about the cfe-commits
mailing list