Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[clang] Implement -falign-loops=N (N is a power of 2) for non-LTO
GCC supports multiple forms of -falign-loops=. -falign-loops= is currently ignored in Clang. This patch implements the simplest but the most useful form where N is a power of 2. The underlying implementation uses a `llvm::TargetOptions` option for now. Bitcode generation ignores this option. Differential Revision: https://reviews.llvm.org/D106701
- Loading branch information
Showing
9 changed files
with
56 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
// REQUIRES: x86-registered-target | ||
/// Check asm because we use llvm::TargetOptions. | ||
|
||
// RUN: %clang_cc1 -triple=x86_64 -S %s -falign-loops=8 -O -o - | FileCheck %s --check-prefixes=CHECK,CHECK_8 | ||
// RUN: %clang_cc1 -triple=x86_64 -S %s -falign-loops=32 -O -o - | FileCheck %s --check-prefixes=CHECK,CHECK_32 | ||
|
||
// CHECK-LABEL: foo: | ||
// CHECK_8: .p2align 3, 0x90 | ||
// CHECK_32: .p2align 5, 0x90 | ||
|
||
void bar(); | ||
void foo() { | ||
for (int i = 0; i < 64; ++i) | ||
bar(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
/// Treat -falign-loops=0 as not specifying the option. | ||
// RUN: %clang -### -falign-loops=0 %s 2>&1 | FileCheck %s --check-prefix=CHECK_NO | ||
// RUN: %clang -### -falign-loops=1 %s 2>&1 | FileCheck %s --check-prefix=CHECK_1 | ||
// RUN: %clang -### -falign-loops=4 %s 2>&1 | FileCheck %s --check-prefix=CHECK_4 | ||
/// Only powers of 2 are supported for now. | ||
// RUN: %clang -### -falign-loops=5 %s 2>&1 | FileCheck %s --check-prefix=CHECK_5 | ||
// RUN: %clang -### -falign-loops=65536 %s 2>&1 | FileCheck %s --check-prefix=CHECK_65536 | ||
// RUN: %clang -### -falign-loops=65537 %s 2>&1 | FileCheck %s --check-prefix=CHECK_65537 | ||
// RUN: %clang -### -falign-loops=a %s 2>&1 | FileCheck %s --check-prefix=CHECK_ERR_A | ||
|
||
// CHECK_NO-NOT: "-falign-loops= | ||
// CHECK_1: "-falign-loops=1" | ||
// CHECK_4: "-falign-loops=4" | ||
// CHECK_5: error: alignment is not a power of 2 in '-falign-loops=5' | ||
// CHECK_65536: "-falign-loops=65536" | ||
// CHECK_65537: error: invalid integral value '65537' in '-falign-loops=65537' | ||
// CHECK_ERR_A: error: invalid integral value 'a' in '-falign-loops=a' |