Skip to content

Commit 82de560

Browse files
kiranchandramohanyuxuanchen1997
authored andcommitted
[Flang][Driver] Enable config file options (#100343)
Summary: Config files provide a facility to invoke the compiler with a predefined set of options. The patch only enables these options in the flang driver. Functionality was always there. Test Plan: Reviewers: Subscribers: Tasks: Tags: Differential Revision: https://phabricator.intern.facebook.com/D60250529
1 parent fa5d567 commit 82de560

File tree

8 files changed

+74
-5
lines changed

8 files changed

+74
-5
lines changed

clang/include/clang/Driver/Options.td

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1165,19 +1165,19 @@ def client__name : JoinedOrSeparate<["-"], "client_name">;
11651165
def combine : Flag<["-", "--"], "combine">, Flags<[NoXarchOption, Unsupported]>;
11661166
def compatibility__version : JoinedOrSeparate<["-"], "compatibility_version">;
11671167
def config : Joined<["--"], "config=">, Flags<[NoXarchOption]>,
1168-
Visibility<[ClangOption, CLOption, DXCOption]>, MetaVarName<"<file>">,
1168+
Visibility<[ClangOption, CLOption, DXCOption, FlangOption]>, MetaVarName<"<file>">,
11691169
HelpText<"Specify configuration file">;
1170-
def : Separate<["--"], "config">, Alias<config>;
1170+
def : Separate<["--"], "config">, Visibility<[ClangOption, CLOption, DXCOption, FlangOption]>, Alias<config>;
11711171
def no_default_config : Flag<["--"], "no-default-config">,
1172-
Flags<[NoXarchOption]>, Visibility<[ClangOption, CLOption, DXCOption]>,
1172+
Flags<[NoXarchOption]>, Visibility<[ClangOption, CLOption, DXCOption, FlangOption]>,
11731173
HelpText<"Disable loading default configuration files">;
11741174
def config_system_dir_EQ : Joined<["--"], "config-system-dir=">,
11751175
Flags<[NoXarchOption, HelpHidden]>,
1176-
Visibility<[ClangOption, CLOption, DXCOption]>,
1176+
Visibility<[ClangOption, CLOption, DXCOption, FlangOption]>,
11771177
HelpText<"System directory for configuration files">;
11781178
def config_user_dir_EQ : Joined<["--"], "config-user-dir=">,
11791179
Flags<[NoXarchOption, HelpHidden]>,
1180-
Visibility<[ClangOption, CLOption, DXCOption]>,
1180+
Visibility<[ClangOption, CLOption, DXCOption, FlangOption]>,
11811181
HelpText<"User directory for configuration files">;
11821182
def coverage : Flag<["-", "--"], "coverage">, Group<Link_Group>,
11831183
Visibility<[ClangOption, CLOption]>;

flang/test/Driver/Inputs/config-1.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
-flto

flang/test/Driver/Inputs/config-2.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
-fno-signed-zeros
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
-fopenmp

flang/test/Driver/Inputs/config-6.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
-fstack-arrays
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
-O3
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
-ffp-contract=fast

flang/test/Driver/config-file.f90

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
!--- Config file (full path) in output of -###
2+
!
3+
! RUN: %flang --config-system-dir=%S/Inputs/config --config-user-dir=%S/Inputs/config2 -o /dev/null -v 2>&1 | FileCheck %s -check-prefix CHECK-DIRS
4+
! CHECK-DIRS: System configuration file directory: {{.*}}/Inputs/config
5+
! CHECK-DIRS: User configuration file directory: {{.*}}/Inputs/config2
6+
!
7+
!--- Config file (full path) in output of -###
8+
!
9+
! RUN: %flang --config %S/Inputs/config-1.cfg -S %s -### 2>&1 | FileCheck %s -check-prefix CHECK-HHH
10+
! RUN: %flang --config=%S/Inputs/config-1.cfg -S %s -### 2>&1 | FileCheck %s -check-prefix CHECK-HHH
11+
! CHECK-HHH: Configuration file: {{.*}}Inputs{{.}}config-1.cfg
12+
! CHECK-HHH: -flto
13+
!
14+
!
15+
!--- Config file (full path) in output of -v
16+
!
17+
! RUN: %flang --config %S/Inputs/config-1.cfg -S %s -o /dev/null -v 2>&1 | FileCheck %s -check-prefix CHECK-V
18+
! CHECK-V: Configuration file: {{.*}}Inputs{{.}}config-1.cfg
19+
! CHECK-V: -flto
20+
!
21+
!--- Config file in output of -###
22+
!
23+
! RUN: %flang --config-system-dir=%S/Inputs --config-user-dir= --config config-1.cfg -S %s -### 2>&1 | FileCheck %s -check-prefix CHECK-HHH2
24+
! CHECK-HHH2: Configuration file: {{.*}}Inputs{{.}}config-1.cfg
25+
! CHECK-HHH2: -flto
26+
!
27+
!--- Config file in output of -v
28+
!
29+
! RUN: %flang --config-system-dir=%S/Inputs --config-user-dir= --config config-1.cfg -S %s -o /dev/null -v 2>&1 | FileCheck %s -check-prefix CHECK-V2
30+
! CHECK-V2: Configuration file: {{.*}}Inputs{{.}}config-1.cfg
31+
! CHECK-V2: -flto
32+
!
33+
!--- Nested config files
34+
!
35+
! RUN: %flang --config-system-dir=%S/Inputs --config-user-dir= --config config-2.cfg -S %s -### 2>&1 | FileCheck %s -check-prefix CHECK-NESTED
36+
! CHECK-NESTED: Configuration file: {{.*}}Inputs{{.}}config-2.cfg
37+
! CHECK-NESTED: -fno-signed-zeros
38+
!
39+
! RUN: %flang --config-system-dir=%S/Inputs --config-user-dir=%S/Inputs/config --config config-6.cfg -S %s -### 2>&1 | FileCheck %s -check-prefix CHECK-NESTED2
40+
! CHECK-NESTED2: Configuration file: {{.*}}Inputs{{.}}config-6.cfg
41+
! CHECK-NESTED2: -fstack-arrays
42+
!
43+
!
44+
! RUN: %flang --config %S/Inputs/config-2a.cfg -S %s -### 2>&1 | FileCheck %s -check-prefix CHECK-NESTEDa
45+
! CHECK-NESTEDa: Configuration file: {{.*}}Inputs{{.}}config-2a.cfg
46+
! CHECK-NESTEDa: -fopenmp
47+
!
48+
! RUN: %flang --config-system-dir=%S/Inputs --config-user-dir= --config config-2a.cfg -S %s -### 2>&1 | FileCheck %s -check-prefix CHECK-NESTED2a
49+
! CHECK-NESTED2a: Configuration file: {{.*}}Inputs{{.}}config-2a.cfg
50+
! CHECK-NESTED2a: -fopenmp
51+
!
52+
!--- User directory is searched first.
53+
!
54+
! RUN: %flang --config-system-dir=%S/Inputs/config --config-user-dir=%S/Inputs/config2 --config config-4.cfg -S %s -o /dev/null -v 2>&1 | FileCheck %s -check-prefix CHECK-PRECEDENCE
55+
! CHECK-PRECEDENCE: Configuration file: {{.*}}Inputs{{.}}config2{{.}}config-4.cfg
56+
! CHECK-PRECEDENCE: -ffp-contract=fast
57+
!
58+
!--- Multiple configuration files can be specified.
59+
! RUN: %flang --config-system-dir=%S/Inputs/config --config-user-dir= --config config-4.cfg --config %S/Inputs/config2/config-4.cfg -S %s -o /dev/null -v 2>&1 | FileCheck %s -check-prefix CHECK-TWO-CONFIGS
60+
! CHECK-TWO-CONFIGS: Configuration file: {{.*}}Inputs{{.}}config{{.}}config-4.cfg
61+
! CHECK-TWO-CONFIGS-NEXT: Configuration file: {{.*}}Inputs{{.}}config2{{.}}config-4.cfg
62+
! CHECK-TWO-CONFIGS: -ffp-contract=fast
63+
! CHECK-TWO-CONFIGS: -O3

0 commit comments

Comments
 (0)