[clang] [Driver] Pass correct alignment for -falign-functions with no argument (PR #101257)
Paul T Robinson via cfe-commits
cfe-commits at lists.llvm.org
Wed Jul 31 10:48:22 PDT 2024
https://github.com/pogo59 updated https://github.com/llvm/llvm-project/pull/101257
>From a95ab9bfb7be8da6c4ebe0d207beff5a0a72bb9d Mon Sep 17 00:00:00 2001
From: Paul Robinson <paul.robinson at sony.com>
Date: Tue, 30 Jul 2024 15:17:14 -0700
Subject: [PATCH 1/2] [Driver] Pass correct alignment for -falign-functions
with no argument
-falign-functions with no argument is supposed to be equivalent to
-falign-functions=16, according to the documentation. Make it so.
---
clang/lib/Driver/ToolChains/CommonArgs.cpp | 2 +-
clang/test/Driver/function-alignment.c | 3 ++-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp
index 1e37d9d348818..bc74f9afcf868 100644
--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -1982,7 +1982,7 @@ unsigned tools::ParseFunctionAlignment(const ToolChain &TC,
return 0;
if (A->getOption().matches(options::OPT_falign_functions))
- return 0;
+ return 4; // log2(16)
unsigned Value = 0;
if (StringRef(A->getValue()).getAsInteger(10, Value) || Value > 65536)
diff --git a/clang/test/Driver/function-alignment.c b/clang/test/Driver/function-alignment.c
index ed4cc80f7ed4f..b0eb7cfdad8cc 100644
--- a/clang/test/Driver/function-alignment.c
+++ b/clang/test/Driver/function-alignment.c
@@ -1,5 +1,5 @@
// RUN: %clang -### %s 2>&1 | FileCheck %s -check-prefix CHECK-0
-// RUN: %clang -### -falign-functions %s 2>&1 | FileCheck %s -check-prefix CHECK-1
+// RUN: %clang -### -falign-functions %s 2>&1 | FileCheck %s -check-prefix CHECK-16
// RUN: %clang -### -falign-functions=1 %s 2>&1 | FileCheck %s -check-prefix CHECK-1
// RUN: %clang -### -falign-functions=2 %s 2>&1 | FileCheck %s -check-prefix CHECK-2
// RUN: %clang -### -falign-functions=3 %s 2>&1 | FileCheck %s -check-prefix CHECK-3
@@ -8,6 +8,7 @@
// RUN: not %clang -### -falign-functions=a %s 2>&1 | FileCheck %s -check-prefix CHECK-ERR-A
// CHECK-0-NOT: "-function-alignment"
+// CHECK-16: "-function-alignment" "4"
// CHECK-1-NOT: "-function-alignment"
// CHECK-2: "-function-alignment" "1"
// CHECK-3: "-function-alignment" "2"
>From d6bd8732e3c3222ac9fd63c1de072b001dbb1af2 Mon Sep 17 00:00:00 2001
From: Paul Robinson <paul.robinson at sony.com>
Date: Wed, 31 Jul 2024 10:47:44 -0700
Subject: [PATCH 2/2] [Driver] Correct comment on default for -falign-functions
---
clang/lib/Driver/ToolChains/CommonArgs.cpp | 6 +++---
clang/test/Driver/function-alignment.c | 3 +--
2 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp
index bc74f9afcf868..3d0714286139d 100644
--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -1957,8 +1957,8 @@ tools::ParsePICArgs(const ToolChain &ToolChain, const ArgList &Args) {
return std::make_tuple(RelocM, 0U, false);
}
-// `-falign-functions` indicates that the functions should be aligned to a
-// 16-byte boundary.
+// `-falign-functions` indicates that the functions should be aligned to the
+// backend's preferred alignment.
//
// `-falign-functions=1` is the same as `-fno-align-functions`.
//
@@ -1982,7 +1982,7 @@ unsigned tools::ParseFunctionAlignment(const ToolChain &TC,
return 0;
if (A->getOption().matches(options::OPT_falign_functions))
- return 4; // log2(16)
+ return 0;
unsigned Value = 0;
if (StringRef(A->getValue()).getAsInteger(10, Value) || Value > 65536)
diff --git a/clang/test/Driver/function-alignment.c b/clang/test/Driver/function-alignment.c
index b0eb7cfdad8cc..ed4cc80f7ed4f 100644
--- a/clang/test/Driver/function-alignment.c
+++ b/clang/test/Driver/function-alignment.c
@@ -1,5 +1,5 @@
// RUN: %clang -### %s 2>&1 | FileCheck %s -check-prefix CHECK-0
-// RUN: %clang -### -falign-functions %s 2>&1 | FileCheck %s -check-prefix CHECK-16
+// RUN: %clang -### -falign-functions %s 2>&1 | FileCheck %s -check-prefix CHECK-1
// RUN: %clang -### -falign-functions=1 %s 2>&1 | FileCheck %s -check-prefix CHECK-1
// RUN: %clang -### -falign-functions=2 %s 2>&1 | FileCheck %s -check-prefix CHECK-2
// RUN: %clang -### -falign-functions=3 %s 2>&1 | FileCheck %s -check-prefix CHECK-3
@@ -8,7 +8,6 @@
// RUN: not %clang -### -falign-functions=a %s 2>&1 | FileCheck %s -check-prefix CHECK-ERR-A
// CHECK-0-NOT: "-function-alignment"
-// CHECK-16: "-function-alignment" "4"
// CHECK-1-NOT: "-function-alignment"
// CHECK-2: "-function-alignment" "1"
// CHECK-3: "-function-alignment" "2"
More information about the cfe-commits
mailing list