annotate gcc/opts.c @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 1830386684a0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 /* Command line option handling.
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2 Copyright (C) 2002-2020 Free Software Foundation, Inc.
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 Contributed by Neil Booth.
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 This file is part of GCC.
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 GCC is free software; you can redistribute it and/or modify it under
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 the terms of the GNU General Public License as published by the Free
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 Software Foundation; either version 3, or (at your option) any later
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 version.
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 WARRANTY; without even the implied warranty of MERCHANTABILITY or
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 for more details.
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
16
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 along with GCC; see the file COPYING3. If not see
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 <http://www.gnu.org/licenses/>. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 #include "config.h"
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 #include "system.h"
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 #include "intl.h"
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 #include "coretypes.h"
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 #include "opts.h"
111
kono
parents: 67
diff changeset
26 #include "tm.h"
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 #include "flags.h"
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 #include "diagnostic.h"
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
29 #include "opts-diagnostic.h"
111
kono
parents: 67
diff changeset
30 #include "insn-attr-common.h"
kono
parents: 67
diff changeset
31 #include "common/common-target.h"
kono
parents: 67
diff changeset
32 #include "spellcheck.h"
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
33 #include "opt-suggestions.h"
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
34 #include "diagnostic-color.h"
111
kono
parents: 67
diff changeset
35
kono
parents: 67
diff changeset
36 static void set_Wstrict_aliasing (struct gcc_options *opts, int onoff);
kono
parents: 67
diff changeset
37
kono
parents: 67
diff changeset
38 /* Indexed by enum debug_info_type. */
kono
parents: 67
diff changeset
39 const char *const debug_type_names[] =
kono
parents: 67
diff changeset
40 {
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
41 "none", "stabs", "dwarf-2", "xcoff", "vms"
111
kono
parents: 67
diff changeset
42 };
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
43
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 /* Parse the -femit-struct-debug-detailed option value
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 and set the flag variables. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
46
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 #define MATCH( prefix, string ) \
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 ((strncmp (prefix, string, sizeof prefix - 1) == 0) \
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 ? ((string += sizeof prefix - 1), 1) : 0)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
50
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 void
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
52 set_struct_debug_option (struct gcc_options *opts, location_t loc,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
53 const char *spec)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 /* various labels for comparison */
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
56 static const char dfn_lbl[] = "dfn:", dir_lbl[] = "dir:", ind_lbl[] = "ind:";
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
57 static const char ord_lbl[] = "ord:", gen_lbl[] = "gen:";
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
58 static const char none_lbl[] = "none", any_lbl[] = "any";
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
59 static const char base_lbl[] = "base", sys_lbl[] = "sys";
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
60
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 enum debug_struct_file files = DINFO_STRUCT_FILE_ANY;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 /* Default is to apply to as much as possible. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 enum debug_info_usage usage = DINFO_USAGE_NUM_ENUMS;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 int ord = 1, gen = 1;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
65
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 /* What usage? */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 if (MATCH (dfn_lbl, spec))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 usage = DINFO_USAGE_DFN;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 else if (MATCH (dir_lbl, spec))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 usage = DINFO_USAGE_DIR_USE;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 else if (MATCH (ind_lbl, spec))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 usage = DINFO_USAGE_IND_USE;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
73
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 /* Generics or not? */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 if (MATCH (ord_lbl, spec))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 gen = 0;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 else if (MATCH (gen_lbl, spec))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 ord = 0;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
79
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 /* What allowable environment? */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 if (MATCH (none_lbl, spec))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 files = DINFO_STRUCT_FILE_NONE;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 else if (MATCH (any_lbl, spec))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 files = DINFO_STRUCT_FILE_ANY;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 else if (MATCH (sys_lbl, spec))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 files = DINFO_STRUCT_FILE_SYS;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 else if (MATCH (base_lbl, spec))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 files = DINFO_STRUCT_FILE_BASE;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 else
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
90 error_at (loc,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
91 "argument %qs to %<-femit-struct-debug-detailed%> "
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
92 "not recognized",
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
93 spec);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
94
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 /* Effect the specification. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 if (usage == DINFO_USAGE_NUM_ENUMS)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 if (ord)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 {
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
100 opts->x_debug_struct_ordinary[DINFO_USAGE_DFN] = files;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
101 opts->x_debug_struct_ordinary[DINFO_USAGE_DIR_USE] = files;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
102 opts->x_debug_struct_ordinary[DINFO_USAGE_IND_USE] = files;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
103 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 if (gen)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
105 {
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
106 opts->x_debug_struct_generic[DINFO_USAGE_DFN] = files;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
107 opts->x_debug_struct_generic[DINFO_USAGE_DIR_USE] = files;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
108 opts->x_debug_struct_generic[DINFO_USAGE_IND_USE] = files;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
109 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 if (ord)
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
114 opts->x_debug_struct_ordinary[usage] = files;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 if (gen)
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
116 opts->x_debug_struct_generic[usage] = files;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
117 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
118
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
119 if (*spec == ',')
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
120 set_struct_debug_option (opts, loc, spec+1);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
121 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
122 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
123 /* No more -femit-struct-debug-detailed specifications.
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
124 Do final checks. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
125 if (*spec != '\0')
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
126 error_at (loc,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
127 "argument %qs to %<-femit-struct-debug-detailed%> unknown",
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
128 spec);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
129 if (opts->x_debug_struct_ordinary[DINFO_USAGE_DIR_USE]
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
130 < opts->x_debug_struct_ordinary[DINFO_USAGE_IND_USE]
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
131 || opts->x_debug_struct_generic[DINFO_USAGE_DIR_USE]
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
132 < opts->x_debug_struct_generic[DINFO_USAGE_IND_USE])
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
133 error_at (loc,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
134 "%<-femit-struct-debug-detailed=dir:...%> must allow "
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
135 "at least as much as "
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
136 "%<-femit-struct-debug-detailed=ind:...%>");
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
137 }
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
138 }
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
139
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
140 /* Strip off a legitimate source ending from the input string NAME of
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
141 length LEN. Rather than having to know the names used by all of
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
142 our front ends, we strip off an ending of a period followed by
111
kono
parents: 67
diff changeset
143 up to fource characters. (C++ uses ".cpp".) */
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
144
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
145 void
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
146 strip_off_ending (char *name, int len)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
147 {
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
148 int i;
111
kono
parents: 67
diff changeset
149 for (i = 2; i < 5 && len > i; i++)
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
150 {
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
151 if (name[len - i] == '.')
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
152 {
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
153 name[len - i] = '\0';
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
154 break;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
155 }
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
156 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
157 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
158
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
159 /* Find the base name of a path, stripping off both directories and
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
160 a single final extension. */
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
161 int
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
162 base_of_path (const char *path, const char **base_out)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
163 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
164 const char *base = path;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
165 const char *dot = 0;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
166 const char *p = path;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
167 char c = *p;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
168 while (c)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
169 {
111
kono
parents: 67
diff changeset
170 if (IS_DIR_SEPARATOR (c))
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
171 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
172 base = p + 1;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
173 dot = 0;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
174 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
175 else if (c == '.')
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
176 dot = p;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
177 c = *++p;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
178 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
179 if (!dot)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
180 dot = p;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
181 *base_out = base;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
182 return dot - base;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
183 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
184
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
185 /* What to print when a switch has no documentation. */
111
kono
parents: 67
diff changeset
186 static const char undocumented_msg[] = N_("This option lacks documentation.");
kono
parents: 67
diff changeset
187 static const char use_diagnosed_msg[] = N_("Uses of this option are diagnosed.");
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
188
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
189 typedef char *char_p; /* For DEF_VEC_P. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
190
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
191 static void set_debug_level (enum debug_info_type type, int extended,
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
192 const char *arg, struct gcc_options *opts,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
193 struct gcc_options *opts_set,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
194 location_t loc);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
195 static void set_fast_math_flags (struct gcc_options *opts, int set);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
196 static void decode_d_option (const char *arg, struct gcc_options *opts,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
197 location_t loc, diagnostic_context *dc);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
198 static void set_unsafe_math_optimizations_flags (struct gcc_options *opts,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
199 int set);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
200 static void enable_warning_as_error (const char *arg, int value,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
201 unsigned int lang_mask,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
202 const struct cl_option_handlers *handlers,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
203 struct gcc_options *opts,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
204 struct gcc_options *opts_set,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
205 location_t loc,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
206 diagnostic_context *dc);
63
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
207
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
208 /* Handle a back-end option; arguments and return value as for
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
209 handle_option. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
210
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
211 bool
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
212 target_handle_option (struct gcc_options *opts,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
213 struct gcc_options *opts_set,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
214 const struct cl_decoded_option *decoded,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
215 unsigned int lang_mask ATTRIBUTE_UNUSED, int kind,
111
kono
parents: 67
diff changeset
216 location_t loc,
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
217 const struct cl_option_handlers *handlers ATTRIBUTE_UNUSED,
111
kono
parents: 67
diff changeset
218 diagnostic_context *dc, void (*) (void))
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
219 {
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
220 gcc_assert (dc == global_dc);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
221 gcc_assert (kind == DK_UNSPECIFIED);
111
kono
parents: 67
diff changeset
222 return targetm_common.handle_option (opts, opts_set, decoded, loc);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
223 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
224
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
225 /* Add comma-separated strings to a char_p vector. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
226
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
227 static void
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
228 add_comma_separated_to_vector (void **pvec, const char *arg)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
229 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
230 char *tmp;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
231 char *r;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
232 char *w;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
233 char *token_start;
111
kono
parents: 67
diff changeset
234 vec<char_p> *v = (vec<char_p> *) *pvec;
kono
parents: 67
diff changeset
235
kono
parents: 67
diff changeset
236 vec_check_alloc (v, 1);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
237
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
238 /* We never free this string. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
239 tmp = xstrdup (arg);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
240
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
241 r = tmp;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
242 w = tmp;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
243 token_start = tmp;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
244
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
245 while (*r != '\0')
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
246 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
247 if (*r == ',')
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
248 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
249 *w++ = '\0';
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
250 ++r;
111
kono
parents: 67
diff changeset
251 v->safe_push (token_start);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
252 token_start = w;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
253 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
254 if (*r == '\\' && r[1] == ',')
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
255 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
256 *w++ = ',';
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
257 r += 2;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
258 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
259 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
260 *w++ = *r++;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
261 }
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
262
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
263 *w = '\0';
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
264 if (*token_start != '\0')
111
kono
parents: 67
diff changeset
265 v->safe_push (token_start);
kono
parents: 67
diff changeset
266
kono
parents: 67
diff changeset
267 *pvec = v;
kono
parents: 67
diff changeset
268 }
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
269
111
kono
parents: 67
diff changeset
270 /* Initialize opts_obstack. */
kono
parents: 67
diff changeset
271
kono
parents: 67
diff changeset
272 void
kono
parents: 67
diff changeset
273 init_opts_obstack (void)
kono
parents: 67
diff changeset
274 {
kono
parents: 67
diff changeset
275 gcc_obstack_init (&opts_obstack);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
276 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
277
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
278 /* Initialize OPTS and OPTS_SET before using them in parsing options. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
279
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
280 void
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
281 init_options_struct (struct gcc_options *opts, struct gcc_options *opts_set)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
282 {
111
kono
parents: 67
diff changeset
283 /* Ensure that opts_obstack has already been initialized by the time
kono
parents: 67
diff changeset
284 that we initialize any gcc_options instances (PR jit/68446). */
kono
parents: 67
diff changeset
285 gcc_assert (opts_obstack.chunk_size > 0);
kono
parents: 67
diff changeset
286
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
287 *opts = global_options_init;
111
kono
parents: 67
diff changeset
288
kono
parents: 67
diff changeset
289 if (opts_set)
kono
parents: 67
diff changeset
290 memset (opts_set, 0, sizeof (*opts_set));
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
291
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
292 /* Initialize whether `char' is signed. */
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
293 opts->x_flag_signed_char = DEFAULT_SIGNED_CHAR;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
294 /* Set this to a special "uninitialized" value. The actual default
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
295 is set after target options have been processed. */
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
296 opts->x_flag_short_enums = 2;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
297
111
kono
parents: 67
diff changeset
298 /* Initialize target_flags before default_options_optimization
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
299 so the latter can modify it. */
111
kono
parents: 67
diff changeset
300 opts->x_target_flags = targetm_common.default_target_flags;
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
301
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
302 /* Some targets have ABI-specified unwind tables. */
111
kono
parents: 67
diff changeset
303 opts->x_flag_unwind_tables = targetm_common.unwind_tables_default;
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
304
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
305 /* Some targets have other target-specific initialization. */
111
kono
parents: 67
diff changeset
306 targetm_common.option_init_struct (opts);
kono
parents: 67
diff changeset
307 }
kono
parents: 67
diff changeset
308
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
309 /* If indicated by the optimization level LEVEL (-Os if SIZE is set,
111
kono
parents: 67
diff changeset
310 -Ofast if FAST is set, -Og if DEBUG is set), apply the option DEFAULT_OPT
kono
parents: 67
diff changeset
311 to OPTS and OPTS_SET, diagnostic context DC, location LOC, with language
kono
parents: 67
diff changeset
312 mask LANG_MASK and option handlers HANDLERS. */
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
313
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
314 static void
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
315 maybe_default_option (struct gcc_options *opts,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
316 struct gcc_options *opts_set,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
317 const struct default_options *default_opt,
111
kono
parents: 67
diff changeset
318 int level, bool size, bool fast, bool debug,
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
319 unsigned int lang_mask,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
320 const struct cl_option_handlers *handlers,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
321 location_t loc,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
322 diagnostic_context *dc)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
323 {
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
324 const struct cl_option *option = &cl_options[default_opt->opt_index];
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
325 bool enabled;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
326
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
327 if (size)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
328 gcc_assert (level == 2);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
329 if (fast)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
330 gcc_assert (level == 3);
111
kono
parents: 67
diff changeset
331 if (debug)
kono
parents: 67
diff changeset
332 gcc_assert (level == 1);
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
333
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
334 switch (default_opt->levels)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
335 {
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
336 case OPT_LEVELS_ALL:
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
337 enabled = true;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
338 break;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
339
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
340 case OPT_LEVELS_0_ONLY:
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
341 enabled = (level == 0);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
342 break;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
343
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
344 case OPT_LEVELS_1_PLUS:
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
345 enabled = (level >= 1);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
346 break;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
347
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
348 case OPT_LEVELS_1_PLUS_SPEED_ONLY:
111
kono
parents: 67
diff changeset
349 enabled = (level >= 1 && !size && !debug);
kono
parents: 67
diff changeset
350 break;
kono
parents: 67
diff changeset
351
kono
parents: 67
diff changeset
352 case OPT_LEVELS_1_PLUS_NOT_DEBUG:
kono
parents: 67
diff changeset
353 enabled = (level >= 1 && !debug);
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
354 break;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
355
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
356 case OPT_LEVELS_2_PLUS:
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
357 enabled = (level >= 2);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
358 break;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
359
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
360 case OPT_LEVELS_2_PLUS_SPEED_ONLY:
111
kono
parents: 67
diff changeset
361 enabled = (level >= 2 && !size && !debug);
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
362 break;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
363
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
364 case OPT_LEVELS_3_PLUS:
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
365 enabled = (level >= 3);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
366 break;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
367
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
368 case OPT_LEVELS_3_PLUS_AND_SIZE:
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
369 enabled = (level >= 3 || size);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
370 break;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
371
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
372 case OPT_LEVELS_SIZE:
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
373 enabled = size;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
374 break;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
375
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
376 case OPT_LEVELS_FAST:
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
377 enabled = fast;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
378 break;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
379
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
380 case OPT_LEVELS_NONE:
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
381 default:
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
382 gcc_unreachable ();
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
383 }
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
384
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
385 if (enabled)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
386 handle_generated_option (opts, opts_set, default_opt->opt_index,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
387 default_opt->arg, default_opt->value,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
388 lang_mask, DK_UNSPECIFIED, loc,
111
kono
parents: 67
diff changeset
389 handlers, true, dc);
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
390 else if (default_opt->arg == NULL
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
391 && !option->cl_reject_negative
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
392 && !(option->flags & CL_PARAMS))
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
393 handle_generated_option (opts, opts_set, default_opt->opt_index,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
394 default_opt->arg, !default_opt->value,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
395 lang_mask, DK_UNSPECIFIED, loc,
111
kono
parents: 67
diff changeset
396 handlers, true, dc);
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
397 }
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
398
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
399 /* As indicated by the optimization level LEVEL (-Os if SIZE is set,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
400 -Ofast if FAST is set), apply the options in array DEFAULT_OPTS to
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
401 OPTS and OPTS_SET, diagnostic context DC, location LOC, with
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
402 language mask LANG_MASK and option handlers HANDLERS. */
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
403
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
404 static void
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
405 maybe_default_options (struct gcc_options *opts,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
406 struct gcc_options *opts_set,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
407 const struct default_options *default_opts,
111
kono
parents: 67
diff changeset
408 int level, bool size, bool fast, bool debug,
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
409 unsigned int lang_mask,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
410 const struct cl_option_handlers *handlers,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
411 location_t loc,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
412 diagnostic_context *dc)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
413 {
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
414 size_t i;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
415
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
416 for (i = 0; default_opts[i].levels != OPT_LEVELS_NONE; i++)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
417 maybe_default_option (opts, opts_set, &default_opts[i],
111
kono
parents: 67
diff changeset
418 level, size, fast, debug,
kono
parents: 67
diff changeset
419 lang_mask, handlers, loc, dc);
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
420 }
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
421
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
422 /* Table of options enabled by default at different levels.
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
423 Please keep this list sorted by level and alphabetized within
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
424 each level; this makes it easier to keep the documentation
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
425 in sync. */
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
426
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
427 static const struct default_options default_options_table[] =
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
428 {
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
429 /* -O1 and -Og optimizations. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
430 { OPT_LEVELS_1_PLUS, OPT_fcombine_stack_adjustments, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
431 { OPT_LEVELS_1_PLUS, OPT_fcompare_elim, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
432 { OPT_LEVELS_1_PLUS, OPT_fcprop_registers, NULL, 1 },
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
433 { OPT_LEVELS_1_PLUS, OPT_fdefer_pop, NULL, 1 },
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
434 { OPT_LEVELS_1_PLUS, OPT_fforward_propagate, NULL, 1 },
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
435 { OPT_LEVELS_1_PLUS, OPT_fguess_branch_probability, NULL, 1 },
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
436 { OPT_LEVELS_1_PLUS, OPT_fipa_profile, NULL, 1 },
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
437 { OPT_LEVELS_1_PLUS, OPT_fipa_pure_const, NULL, 1 },
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
438 { OPT_LEVELS_1_PLUS, OPT_fipa_reference, NULL, 1 },
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
439 { OPT_LEVELS_1_PLUS, OPT_fipa_reference_addressable, NULL, 1 },
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
440 { OPT_LEVELS_1_PLUS, OPT_fmerge_constants, NULL, 1 },
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
441 { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 },
111
kono
parents: 67
diff changeset
442 { OPT_LEVELS_1_PLUS, OPT_freorder_blocks, NULL, 1 },
kono
parents: 67
diff changeset
443 { OPT_LEVELS_1_PLUS, OPT_fshrink_wrap, NULL, 1 },
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
444 { OPT_LEVELS_1_PLUS, OPT_fsplit_wide_types, NULL, 1 },
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
445 { OPT_LEVELS_1_PLUS, OPT_ftree_builtin_call_dce, NULL, 1 },
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
446 { OPT_LEVELS_1_PLUS, OPT_ftree_ccp, NULL, 1 },
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
447 { OPT_LEVELS_1_PLUS, OPT_ftree_ch, NULL, 1 },
111
kono
parents: 67
diff changeset
448 { OPT_LEVELS_1_PLUS, OPT_ftree_coalesce_vars, NULL, 1 },
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
449 { OPT_LEVELS_1_PLUS, OPT_ftree_copy_prop, NULL, 1 },
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
450 { OPT_LEVELS_1_PLUS, OPT_ftree_dce, NULL, 1 },
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
451 { OPT_LEVELS_1_PLUS, OPT_ftree_dominator_opts, NULL, 1 },
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
452 { OPT_LEVELS_1_PLUS, OPT_ftree_fre, NULL, 1 },
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
453 { OPT_LEVELS_1_PLUS, OPT_ftree_sink, NULL, 1 },
111
kono
parents: 67
diff changeset
454 { OPT_LEVELS_1_PLUS, OPT_ftree_slsr, NULL, 1 },
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
455 { OPT_LEVELS_1_PLUS, OPT_ftree_ter, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
456
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
457 /* -O1 (and not -Og) optimizations. */
111
kono
parents: 67
diff changeset
458 { OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_fbranch_count_reg, NULL, 1 },
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
459 #if DELAY_SLOTS
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
460 { OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_fdelayed_branch, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
461 #endif
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
462 { OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_fdse, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
463 { OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_fif_conversion, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
464 { OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_fif_conversion2, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
465 { OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_finline_functions_called_once, NULL, 1 },
111
kono
parents: 67
diff changeset
466 { OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_fmove_loop_invariants, NULL, 1 },
kono
parents: 67
diff changeset
467 { OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_fssa_phiopt, NULL, 1 },
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
468 { OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_ftree_bit_ccp, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
469 { OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_ftree_dse, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
470 { OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_ftree_pta, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
471 { OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_ftree_sra, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
472
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
473 /* -O2 and -Os optimizations. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
474 { OPT_LEVELS_2_PLUS, OPT_fcaller_saves, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
475 { OPT_LEVELS_2_PLUS, OPT_fcode_hoisting, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
476 { OPT_LEVELS_2_PLUS, OPT_fcrossjumping, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
477 { OPT_LEVELS_2_PLUS, OPT_fcse_follow_jumps, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
478 { OPT_LEVELS_2_PLUS, OPT_fdevirtualize, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
479 { OPT_LEVELS_2_PLUS, OPT_fdevirtualize_speculatively, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
480 { OPT_LEVELS_2_PLUS, OPT_fexpensive_optimizations, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
481 { OPT_LEVELS_2_PLUS, OPT_ffinite_loops, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
482 { OPT_LEVELS_2_PLUS, OPT_fgcse, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
483 { OPT_LEVELS_2_PLUS, OPT_fhoist_adjacent_loads, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
484 { OPT_LEVELS_2_PLUS, OPT_findirect_inlining, NULL, 1 },
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
485 { OPT_LEVELS_2_PLUS, OPT_finline_small_functions, NULL, 1 },
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
486 { OPT_LEVELS_2_PLUS, OPT_fipa_bit_cp, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
487 { OPT_LEVELS_2_PLUS, OPT_fipa_cp, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
488 { OPT_LEVELS_2_PLUS, OPT_fipa_icf, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
489 { OPT_LEVELS_2_PLUS, OPT_fipa_ra, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
490 { OPT_LEVELS_2_PLUS, OPT_fipa_sra, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
491 { OPT_LEVELS_2_PLUS, OPT_fipa_vrp, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
492 { OPT_LEVELS_2_PLUS, OPT_fisolate_erroneous_paths_dereference, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
493 { OPT_LEVELS_2_PLUS, OPT_flra_remat, NULL, 1 },
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
494 { OPT_LEVELS_2_PLUS, OPT_foptimize_sibling_calls, NULL, 1 },
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
495 { OPT_LEVELS_2_PLUS, OPT_fpartial_inlining, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
496 { OPT_LEVELS_2_PLUS, OPT_fpeephole2, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
497 { OPT_LEVELS_2_PLUS, OPT_freorder_functions, NULL, 1 },
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
498 { OPT_LEVELS_2_PLUS, OPT_frerun_cse_after_loop, NULL, 1 },
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
499 #ifdef INSN_SCHEDULING
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
500 { OPT_LEVELS_2_PLUS, OPT_fschedule_insns2, NULL, 1 },
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
501 #endif
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
502 { OPT_LEVELS_2_PLUS, OPT_fstrict_aliasing, NULL, 1 },
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
503 { OPT_LEVELS_2_PLUS, OPT_fstore_merging, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
504 { OPT_LEVELS_2_PLUS, OPT_fthread_jumps, NULL, 1 },
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
505 { OPT_LEVELS_2_PLUS, OPT_ftree_pre, NULL, 1 },
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
506 { OPT_LEVELS_2_PLUS, OPT_ftree_switch_conversion, NULL, 1 },
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
507 { OPT_LEVELS_2_PLUS, OPT_ftree_tail_merge, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
508 { OPT_LEVELS_2_PLUS, OPT_ftree_vrp, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
509 { OPT_LEVELS_2_PLUS, OPT_fvect_cost_model_, NULL, VECT_COST_MODEL_CHEAP },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
510 { OPT_LEVELS_2_PLUS, OPT_finline_functions, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
511 { OPT_LEVELS_2_PLUS, OPT_ftree_loop_distribute_patterns, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
512
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
513 /* -O2 and above optimizations, but not -Os or -Og. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
514 { OPT_LEVELS_2_PLUS_SPEED_ONLY, OPT_falign_functions, NULL, 1 },
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
515 { OPT_LEVELS_2_PLUS_SPEED_ONLY, OPT_falign_jumps, NULL, 1 },
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
516 { OPT_LEVELS_2_PLUS_SPEED_ONLY, OPT_falign_labels, NULL, 1 },
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
517 { OPT_LEVELS_2_PLUS_SPEED_ONLY, OPT_falign_loops, NULL, 1 },
111
kono
parents: 67
diff changeset
518 { OPT_LEVELS_2_PLUS_SPEED_ONLY, OPT_foptimize_strlen, NULL, 1 },
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
519 { OPT_LEVELS_2_PLUS_SPEED_ONLY, OPT_freorder_blocks_algorithm_, NULL,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
520 REORDER_BLOCKS_ALGORITHM_STC },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
521 #ifdef INSN_SCHEDULING
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
522 /* Only run the pre-regalloc scheduling pass if optimizing for speed. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
523 { OPT_LEVELS_2_PLUS_SPEED_ONLY, OPT_fschedule_insns, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
524 #endif
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
525
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
526 /* -O3 and -Os optimizations. */
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
527
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
528 /* -O3 optimizations. */
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
529 { OPT_LEVELS_3_PLUS, OPT_fgcse_after_reload, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
530 { OPT_LEVELS_3_PLUS, OPT_fipa_cp_clone, NULL, 1 },
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
531 { OPT_LEVELS_3_PLUS, OPT_floop_interchange, NULL, 1 },
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
532 { OPT_LEVELS_3_PLUS, OPT_floop_unroll_and_jam, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
533 { OPT_LEVELS_3_PLUS, OPT_fpeel_loops, NULL, 1 },
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
534 { OPT_LEVELS_3_PLUS, OPT_fpredictive_commoning, NULL, 1 },
111
kono
parents: 67
diff changeset
535 { OPT_LEVELS_3_PLUS, OPT_fsplit_loops, NULL, 1 },
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
536 { OPT_LEVELS_3_PLUS, OPT_fsplit_paths, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
537 { OPT_LEVELS_3_PLUS, OPT_ftree_loop_distribution, NULL, 1 },
111
kono
parents: 67
diff changeset
538 { OPT_LEVELS_3_PLUS, OPT_ftree_loop_vectorize, NULL, 1 },
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
539 { OPT_LEVELS_3_PLUS, OPT_ftree_partial_pre, NULL, 1 },
111
kono
parents: 67
diff changeset
540 { OPT_LEVELS_3_PLUS, OPT_ftree_slp_vectorize, NULL, 1 },
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
541 { OPT_LEVELS_3_PLUS, OPT_funswitch_loops, NULL, 1 },
111
kono
parents: 67
diff changeset
542 { OPT_LEVELS_3_PLUS, OPT_fvect_cost_model_, NULL, VECT_COST_MODEL_DYNAMIC },
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
543 { OPT_LEVELS_3_PLUS, OPT_fversion_loops_for_strides, NULL, 1 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
544
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
545 /* -O3 parameters. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
546 { OPT_LEVELS_3_PLUS, OPT__param_max_inline_insns_auto_, NULL, 30 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
547 { OPT_LEVELS_3_PLUS, OPT__param_early_inlining_insns_, NULL, 14 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
548 { OPT_LEVELS_3_PLUS, OPT__param_inline_heuristics_hint_percent_, NULL, 600 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
549 { OPT_LEVELS_3_PLUS, OPT__param_inline_min_speedup_, NULL, 15 },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
550 { OPT_LEVELS_3_PLUS, OPT__param_max_inline_insns_single_, NULL, 200 },
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
551
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
552 /* -Ofast adds optimizations to -O3. */
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
553 { OPT_LEVELS_FAST, OPT_ffast_math, NULL, 1 },
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
554 { OPT_LEVELS_FAST, OPT_fallow_store_data_races, NULL, 1 },
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
555
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
556 { OPT_LEVELS_NONE, 0, NULL, 0 }
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
557 };
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
558
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
559 /* Default the options in OPTS and OPTS_SET based on the optimization
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
560 settings in DECODED_OPTIONS and DECODED_OPTIONS_COUNT. */
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
561 void
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
562 default_options_optimization (struct gcc_options *opts,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
563 struct gcc_options *opts_set,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
564 struct cl_decoded_option *decoded_options,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
565 unsigned int decoded_options_count,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
566 location_t loc,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
567 unsigned int lang_mask,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
568 const struct cl_option_handlers *handlers,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
569 diagnostic_context *dc)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
570 {
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
571 unsigned int i;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
572 int opt2;
111
kono
parents: 67
diff changeset
573 bool openacc_mode = false;
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
574
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
575 /* Scan to see what optimization level has been specified. That will
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
576 determine the default value of many flags. */
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
577 for (i = 1; i < decoded_options_count; i++)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
578 {
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
579 struct cl_decoded_option *opt = &decoded_options[i];
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
580 switch (opt->opt_index)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
581 {
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
582 case OPT_O:
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
583 if (*opt->arg == '\0')
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
584 {
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
585 opts->x_optimize = 1;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
586 opts->x_optimize_size = 0;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
587 opts->x_optimize_fast = 0;
111
kono
parents: 67
diff changeset
588 opts->x_optimize_debug = 0;
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
589 }
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
590 else
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
591 {
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
592 const int optimize_val = integral_argument (opt->arg);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
593 if (optimize_val == -1)
111
kono
parents: 67
diff changeset
594 error_at (loc, "argument to %<-O%> should be a non-negative "
kono
parents: 67
diff changeset
595 "integer, %<g%>, %<s%> or %<fast%>");
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
596 else
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
597 {
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
598 opts->x_optimize = optimize_val;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
599 if ((unsigned int) opts->x_optimize > 255)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
600 opts->x_optimize = 255;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
601 opts->x_optimize_size = 0;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
602 opts->x_optimize_fast = 0;
111
kono
parents: 67
diff changeset
603 opts->x_optimize_debug = 0;
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
604 }
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
605 }
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
606 break;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
607
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
608 case OPT_Os:
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
609 opts->x_optimize_size = 1;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
610
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
611 /* Optimizing for size forces optimize to be 2. */
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
612 opts->x_optimize = 2;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
613 opts->x_optimize_fast = 0;
111
kono
parents: 67
diff changeset
614 opts->x_optimize_debug = 0;
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
615 break;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
616
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
617 case OPT_Ofast:
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
618 /* -Ofast only adds flags to -O3. */
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
619 opts->x_optimize_size = 0;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
620 opts->x_optimize = 3;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
621 opts->x_optimize_fast = 1;
111
kono
parents: 67
diff changeset
622 opts->x_optimize_debug = 0;
kono
parents: 67
diff changeset
623 break;
kono
parents: 67
diff changeset
624
kono
parents: 67
diff changeset
625 case OPT_Og:
kono
parents: 67
diff changeset
626 /* -Og selects optimization level 1. */
kono
parents: 67
diff changeset
627 opts->x_optimize_size = 0;
kono
parents: 67
diff changeset
628 opts->x_optimize = 1;
kono
parents: 67
diff changeset
629 opts->x_optimize_fast = 0;
kono
parents: 67
diff changeset
630 opts->x_optimize_debug = 1;
kono
parents: 67
diff changeset
631 break;
kono
parents: 67
diff changeset
632
kono
parents: 67
diff changeset
633 case OPT_fopenacc:
kono
parents: 67
diff changeset
634 if (opt->value)
kono
parents: 67
diff changeset
635 openacc_mode = true;
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
636 break;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
637
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
638 default:
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
639 /* Ignore other options in this prescan. */
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
640 break;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
641 }
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
642 }
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
643
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
644 maybe_default_options (opts, opts_set, default_options_table,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
645 opts->x_optimize, opts->x_optimize_size,
111
kono
parents: 67
diff changeset
646 opts->x_optimize_fast, opts->x_optimize_debug,
kono
parents: 67
diff changeset
647 lang_mask, handlers, loc, dc);
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
648
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
649 /* -O2 param settings. */
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
650 opt2 = (opts->x_optimize >= 2);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
651
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
652 if (openacc_mode)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
653 SET_OPTION_IF_UNSET (opts, opts_set, flag_ipa_pta, true);
111
kono
parents: 67
diff changeset
654
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
655 /* Track fields in field-sensitive alias analysis. */
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
656 if (opt2)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
657 SET_OPTION_IF_UNSET (opts, opts_set, param_max_fields_for_field_sensitive,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
658 100);
111
kono
parents: 67
diff changeset
659
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
660 if (opts->x_optimize_size)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
661 /* We want to crossjump as much as possible. */
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
662 SET_OPTION_IF_UNSET (opts, opts_set, param_min_crossjump_insns, 1);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
663
111
kono
parents: 67
diff changeset
664 /* Restrict the amount of work combine does at -Og while retaining
kono
parents: 67
diff changeset
665 most of its useful transforms. */
kono
parents: 67
diff changeset
666 if (opts->x_optimize_debug)
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
667 SET_OPTION_IF_UNSET (opts, opts_set, param_max_combine_insns, 2);
111
kono
parents: 67
diff changeset
668
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
669 /* Allow default optimizations to be specified on a per-machine basis. */
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
670 maybe_default_options (opts, opts_set,
111
kono
parents: 67
diff changeset
671 targetm_common.option_optimization_table,
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
672 opts->x_optimize, opts->x_optimize_size,
111
kono
parents: 67
diff changeset
673 opts->x_optimize_fast, opts->x_optimize_debug,
kono
parents: 67
diff changeset
674 lang_mask, handlers, loc, dc);
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
675 }
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
676
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
677 /* Control IPA optimizations based on different live patching LEVEL. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
678 static void
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
679 control_options_for_live_patching (struct gcc_options *opts,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
680 struct gcc_options *opts_set,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
681 enum live_patching_level level,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
682 location_t loc)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
683 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
684 gcc_assert (level > LIVE_PATCHING_NONE);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
685
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
686 switch (level)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
687 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
688 case LIVE_PATCHING_INLINE_ONLY_STATIC:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
689 if (opts_set->x_flag_ipa_cp_clone && opts->x_flag_ipa_cp_clone)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
690 error_at (loc,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
691 "%<-fipa-cp-clone%> is incompatible with "
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
692 "%<-flive-patching=inline-only-static%>");
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
693 else
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
694 opts->x_flag_ipa_cp_clone = 0;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
695
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
696 if (opts_set->x_flag_ipa_sra && opts->x_flag_ipa_sra)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
697 error_at (loc,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
698 "%<-fipa-sra%> is incompatible with "
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
699 "%<-flive-patching=inline-only-static%>");
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
700 else
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
701 opts->x_flag_ipa_sra = 0;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
702
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
703 if (opts_set->x_flag_partial_inlining && opts->x_flag_partial_inlining)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
704 error_at (loc,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
705 "%<-fpartial-inlining%> is incompatible with "
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
706 "%<-flive-patching=inline-only-static%>");
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
707 else
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
708 opts->x_flag_partial_inlining = 0;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
709
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
710 if (opts_set->x_flag_ipa_cp && opts->x_flag_ipa_cp)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
711 error_at (loc,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
712 "%<-fipa-cp%> is incompatible with "
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
713 "%<-flive-patching=inline-only-static%>");
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
714 else
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
715 opts->x_flag_ipa_cp = 0;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
716
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
717 /* FALLTHROUGH. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
718 case LIVE_PATCHING_INLINE_CLONE:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
719 /* live patching should disable whole-program optimization. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
720 if (opts_set->x_flag_whole_program && opts->x_flag_whole_program)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
721 error_at (loc,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
722 "%<-fwhole-program%> is incompatible with "
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
723 "%<-flive-patching=inline-only-static|inline-clone%>");
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
724 else
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
725 opts->x_flag_whole_program = 0;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
726
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
727 /* visibility change should be excluded by !flag_whole_program
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
728 && !in_lto_p && !flag_ipa_cp_clone && !flag_ipa_sra
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
729 && !flag_partial_inlining. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
730
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
731 if (opts_set->x_flag_ipa_pta && opts->x_flag_ipa_pta)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
732 error_at (loc,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
733 "%<-fipa-pta%> is incompatible with "
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
734 "%<-flive-patching=inline-only-static|inline-clone%>");
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
735 else
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
736 opts->x_flag_ipa_pta = 0;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
737
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
738 if (opts_set->x_flag_ipa_reference && opts->x_flag_ipa_reference)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
739 error_at (loc,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
740 "%<-fipa-reference%> is incompatible with "
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
741 "%<-flive-patching=inline-only-static|inline-clone%>");
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
742 else
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
743 opts->x_flag_ipa_reference = 0;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
744
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
745 if (opts_set->x_flag_ipa_ra && opts->x_flag_ipa_ra)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
746 error_at (loc,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
747 "%<-fipa-ra%> is incompatible with "
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
748 "%<-flive-patching=inline-only-static|inline-clone%>");
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
749 else
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
750 opts->x_flag_ipa_ra = 0;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
751
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
752 if (opts_set->x_flag_ipa_icf && opts->x_flag_ipa_icf)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
753 error_at (loc,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
754 "%<-fipa-icf%> is incompatible with "
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
755 "%<-flive-patching=inline-only-static|inline-clone%>");
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
756 else
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
757 opts->x_flag_ipa_icf = 0;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
758
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
759 if (opts_set->x_flag_ipa_icf_functions && opts->x_flag_ipa_icf_functions)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
760 error_at (loc,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
761 "%<-fipa-icf-functions%> is incompatible with "
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
762 "%<-flive-patching=inline-only-static|inline-clone%>");
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
763 else
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
764 opts->x_flag_ipa_icf_functions = 0;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
765
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
766 if (opts_set->x_flag_ipa_icf_variables && opts->x_flag_ipa_icf_variables)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
767 error_at (loc,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
768 "%<-fipa-icf-variables%> is incompatible with "
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
769 "%<-flive-patching=inline-only-static|inline-clone%>");
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
770 else
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
771 opts->x_flag_ipa_icf_variables = 0;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
772
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
773 if (opts_set->x_flag_ipa_bit_cp && opts->x_flag_ipa_bit_cp)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
774 error_at (loc,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
775 "%<-fipa-bit-cp%> is incompatible with "
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
776 "%<-flive-patching=inline-only-static|inline-clone%>");
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
777 else
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
778 opts->x_flag_ipa_bit_cp = 0;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
779
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
780 if (opts_set->x_flag_ipa_vrp && opts->x_flag_ipa_vrp)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
781 error_at (loc,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
782 "%<-fipa-vrp%> is incompatible with "
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
783 "%<-flive-patching=inline-only-static|inline-clone%>");
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
784 else
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
785 opts->x_flag_ipa_vrp = 0;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
786
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
787 if (opts_set->x_flag_ipa_pure_const && opts->x_flag_ipa_pure_const)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
788 error_at (loc,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
789 "%<-fipa-pure-const%> is incompatible with "
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
790 "%<-flive-patching=inline-only-static|inline-clone%>");
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
791 else
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
792 opts->x_flag_ipa_pure_const = 0;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
793
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
794 /* FIXME: disable unreachable code removal. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
795
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
796 /* discovery of functions/variables with no address taken. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
797 if (opts_set->x_flag_ipa_reference_addressable
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
798 && opts->x_flag_ipa_reference_addressable)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
799 error_at (loc,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
800 "%<-fipa-reference-addressable%> is incompatible with "
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
801 "%<-flive-patching=inline-only-static|inline-clone%>");
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
802 else
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
803 opts->x_flag_ipa_reference_addressable = 0;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
804
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
805 /* ipa stack alignment propagation. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
806 if (opts_set->x_flag_ipa_stack_alignment
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
807 && opts->x_flag_ipa_stack_alignment)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
808 error_at (loc,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
809 "%<-fipa-stack-alignment%> is incompatible with "
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
810 "%<-flive-patching=inline-only-static|inline-clone%>");
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
811 else
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
812 opts->x_flag_ipa_stack_alignment = 0;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
813 break;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
814 default:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
815 gcc_unreachable ();
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
816 }
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
817 }
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
818
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
819 /* --help option argument if set. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
820 vec<const char *> help_option_arguments;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
821
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
822
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
823 /* After all options at LOC have been read into OPTS and OPTS_SET,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
824 finalize settings of those options and diagnose incompatible
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
825 combinations. */
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
826 void
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
827 finish_options (struct gcc_options *opts, struct gcc_options *opts_set,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
828 location_t loc)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
829 {
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
830 enum unwind_info_type ui_except;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
831
111
kono
parents: 67
diff changeset
832 if (opts->x_dump_base_name
kono
parents: 67
diff changeset
833 && ! opts->x_dump_base_name_prefixed)
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
834 {
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
835 const char *sep = opts->x_dump_base_name;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
836
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
837 for (; *sep; sep++)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
838 if (IS_DIR_SEPARATOR (*sep))
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
839 break;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
840
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
841 if (*sep)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
842 /* If dump_base_path contains subdirectories, don't prepend
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
843 anything. */;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
844 else if (opts->x_dump_dir_name)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
845 /* We have a DUMP_DIR_NAME, prepend that. */
111
kono
parents: 67
diff changeset
846 opts->x_dump_base_name = opts_concat (opts->x_dump_dir_name,
kono
parents: 67
diff changeset
847 opts->x_dump_base_name, NULL);
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
848 else if (opts->x_aux_base_name
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
849 && strcmp (opts->x_aux_base_name, HOST_BIT_BUCKET) != 0)
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
850 /* AUX_BASE_NAME is set and is not the bit bucket. If it
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
851 contains a directory component, prepend those directories.
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
852 Typically this places things in the same directory as the
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
853 object file. */
63
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
854 {
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
855 const char *aux_base;
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
856
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
857 base_of_path (opts->x_aux_base_name, &aux_base);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
858 if (opts->x_aux_base_name != aux_base)
63
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
859 {
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
860 int dir_len = aux_base - opts->x_aux_base_name;
111
kono
parents: 67
diff changeset
861 char *new_dump_base_name
kono
parents: 67
diff changeset
862 = XOBNEWVEC (&opts_obstack, char,
kono
parents: 67
diff changeset
863 strlen (opts->x_dump_base_name) + dir_len + 1);
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
864
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
865 /* Copy directory component from OPTS->X_AUX_BASE_NAME. */
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
866 memcpy (new_dump_base_name, opts->x_aux_base_name, dir_len);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
867 /* Append existing OPTS->X_DUMP_BASE_NAME. */
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
868 strcpy (new_dump_base_name + dir_len, opts->x_dump_base_name);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
869 opts->x_dump_base_name = new_dump_base_name;
63
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
870 }
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
871 }
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
872
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
873 /* It is definitely prefixed now. */
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
874 opts->x_dump_base_name_prefixed = true;
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
875 }
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
876
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
877 /* Handle related options for unit-at-a-time, toplevel-reorder, and
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
878 section-anchors. */
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
879 if (!opts->x_flag_unit_at_a_time)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
880 {
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
881 if (opts->x_flag_section_anchors && opts_set->x_flag_section_anchors)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
882 error_at (loc, "section anchors must be disabled when unit-at-a-time "
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
883 "is disabled");
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
884 opts->x_flag_section_anchors = 0;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
885 if (opts->x_flag_toplevel_reorder == 1)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
886 error_at (loc, "toplevel reorder must be disabled when unit-at-a-time "
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
887 "is disabled");
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
888 opts->x_flag_toplevel_reorder = 0;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
889 }
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
890
111
kono
parents: 67
diff changeset
891 /* -fself-test depends on the state of the compiler prior to
kono
parents: 67
diff changeset
892 compiling anything. Ideally it should be run on an empty source
kono
parents: 67
diff changeset
893 file. However, in case we get run with actual source, assume
kono
parents: 67
diff changeset
894 -fsyntax-only which will inhibit any compiler initialization
kono
parents: 67
diff changeset
895 which may confuse the self tests. */
kono
parents: 67
diff changeset
896 if (opts->x_flag_self_test)
kono
parents: 67
diff changeset
897 opts->x_flag_syntax_only = 1;
kono
parents: 67
diff changeset
898
kono
parents: 67
diff changeset
899 if (opts->x_flag_tm && opts->x_flag_non_call_exceptions)
kono
parents: 67
diff changeset
900 sorry ("transactional memory is not supported with non-call exceptions");
kono
parents: 67
diff changeset
901
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
902 /* Unless the user has asked for section anchors, we disable toplevel
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
903 reordering at -O0 to disable transformations that might be surprising
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
904 to end users and to get -fno-toplevel-reorder tested. */
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
905 if (!opts->x_optimize
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
906 && opts->x_flag_toplevel_reorder == 2
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
907 && !(opts->x_flag_section_anchors && opts_set->x_flag_section_anchors))
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
908 {
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
909 opts->x_flag_toplevel_reorder = 0;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
910 opts->x_flag_section_anchors = 0;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
911 }
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
912 if (!opts->x_flag_toplevel_reorder)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
913 {
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
914 if (opts->x_flag_section_anchors && opts_set->x_flag_section_anchors)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
915 error_at (loc, "section anchors must be disabled when toplevel reorder"
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
916 " is disabled");
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
917 opts->x_flag_section_anchors = 0;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
918 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
919
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
920 if (!opts->x_flag_opts_finished)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
921 {
111
kono
parents: 67
diff changeset
922 /* We initialize opts->x_flag_pie to -1 so that targets can set a
kono
parents: 67
diff changeset
923 default value. */
kono
parents: 67
diff changeset
924 if (opts->x_flag_pie == -1)
kono
parents: 67
diff changeset
925 {
kono
parents: 67
diff changeset
926 /* We initialize opts->x_flag_pic to -1 so that we can tell if
kono
parents: 67
diff changeset
927 -fpic, -fPIC, -fno-pic or -fno-PIC is used. */
kono
parents: 67
diff changeset
928 if (opts->x_flag_pic == -1)
kono
parents: 67
diff changeset
929 opts->x_flag_pie = DEFAULT_FLAG_PIE;
kono
parents: 67
diff changeset
930 else
kono
parents: 67
diff changeset
931 opts->x_flag_pie = 0;
kono
parents: 67
diff changeset
932 }
kono
parents: 67
diff changeset
933 /* If -fPIE or -fpie is used, turn on PIC. */
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
934 if (opts->x_flag_pie)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
935 opts->x_flag_pic = opts->x_flag_pie;
111
kono
parents: 67
diff changeset
936 else if (opts->x_flag_pic == -1)
kono
parents: 67
diff changeset
937 opts->x_flag_pic = 0;
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
938 if (opts->x_flag_pic && !opts->x_flag_pie)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
939 opts->x_flag_shlib = 1;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
940 opts->x_flag_opts_finished = true;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
941 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
942
111
kono
parents: 67
diff changeset
943 /* We initialize opts->x_flag_stack_protect to -1 so that targets
kono
parents: 67
diff changeset
944 can set a default value. */
kono
parents: 67
diff changeset
945 if (opts->x_flag_stack_protect == -1)
kono
parents: 67
diff changeset
946 opts->x_flag_stack_protect = DEFAULT_FLAG_SSP;
kono
parents: 67
diff changeset
947
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
948 if (opts->x_optimize == 0)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
949 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
950 /* Inlining does not work if not optimizing,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
951 so force it not to be done. */
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
952 opts->x_warn_inline = 0;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
953 opts->x_flag_no_inline = 1;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
954 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
955
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
956 /* The optimization to partition hot and cold basic blocks into separate
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
957 sections of the .o and executable files does not work (currently)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
958 with exception handling. This is because there is no support for
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
959 generating unwind info. If opts->x_flag_exceptions is turned on
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
960 we need to turn off the partitioning optimization. */
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
961
111
kono
parents: 67
diff changeset
962 ui_except = targetm_common.except_unwind_info (opts);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
963
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
964 if (opts->x_flag_exceptions
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
965 && opts->x_flag_reorder_blocks_and_partition
111
kono
parents: 67
diff changeset
966 && (ui_except == UI_SJLJ || ui_except >= UI_TARGET))
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
967 {
111
kono
parents: 67
diff changeset
968 if (opts_set->x_flag_reorder_blocks_and_partition)
kono
parents: 67
diff changeset
969 inform (loc,
kono
parents: 67
diff changeset
970 "%<-freorder-blocks-and-partition%> does not work "
kono
parents: 67
diff changeset
971 "with exceptions on this architecture");
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
972 opts->x_flag_reorder_blocks_and_partition = 0;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
973 opts->x_flag_reorder_blocks = 1;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
974 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
975
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
976 /* If user requested unwind info, then turn off the partitioning
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
977 optimization. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
978
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
979 if (opts->x_flag_unwind_tables
111
kono
parents: 67
diff changeset
980 && !targetm_common.unwind_tables_default
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
981 && opts->x_flag_reorder_blocks_and_partition
111
kono
parents: 67
diff changeset
982 && (ui_except == UI_SJLJ || ui_except >= UI_TARGET))
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
983 {
111
kono
parents: 67
diff changeset
984 if (opts_set->x_flag_reorder_blocks_and_partition)
kono
parents: 67
diff changeset
985 inform (loc,
kono
parents: 67
diff changeset
986 "%<-freorder-blocks-and-partition%> does not support "
kono
parents: 67
diff changeset
987 "unwind info on this architecture");
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
988 opts->x_flag_reorder_blocks_and_partition = 0;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
989 opts->x_flag_reorder_blocks = 1;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
990 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
991
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
992 /* If the target requested unwind info, then turn off the partitioning
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
993 optimization with a different message. Likewise, if the target does not
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
994 support named sections. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
995
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
996 if (opts->x_flag_reorder_blocks_and_partition
111
kono
parents: 67
diff changeset
997 && (!targetm_common.have_named_sections
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
998 || (opts->x_flag_unwind_tables
111
kono
parents: 67
diff changeset
999 && targetm_common.unwind_tables_default
kono
parents: 67
diff changeset
1000 && (ui_except == UI_SJLJ || ui_except >= UI_TARGET))))
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1001 {
111
kono
parents: 67
diff changeset
1002 if (opts_set->x_flag_reorder_blocks_and_partition)
kono
parents: 67
diff changeset
1003 inform (loc,
kono
parents: 67
diff changeset
1004 "%<-freorder-blocks-and-partition%> does not work "
kono
parents: 67
diff changeset
1005 "on this architecture");
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1006 opts->x_flag_reorder_blocks_and_partition = 0;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1007 opts->x_flag_reorder_blocks = 1;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1008 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1009
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1010
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1011 /* Pipelining of outer loops is only possible when general pipelining
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1012 capabilities are requested. */
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1013 if (!opts->x_flag_sel_sched_pipelining)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1014 opts->x_flag_sel_sched_pipelining_outer_loops = 0;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1015
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1016 if (opts->x_flag_conserve_stack)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1017 {
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1018 SET_OPTION_IF_UNSET (opts, opts_set, param_large_stack_frame, 100);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1019 SET_OPTION_IF_UNSET (opts, opts_set, param_stack_frame_growth, 40);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1020 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1021
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1022 if (opts->x_flag_lto)
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
1023 {
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
1024 #ifdef ENABLE_LTO
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1025 opts->x_flag_generate_lto = 1;
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
1026
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
1027 /* When generating IL, do not operate in whole-program mode.
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
1028 Otherwise, symbols will be privatized too early, causing link
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
1029 errors later. */
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1030 opts->x_flag_whole_program = 0;
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
1031 #else
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1032 error_at (loc, "LTO support has not been enabled in this configuration");
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
1033 #endif
111
kono
parents: 67
diff changeset
1034 if (!opts->x_flag_fat_lto_objects
kono
parents: 67
diff changeset
1035 && (!HAVE_LTO_PLUGIN
kono
parents: 67
diff changeset
1036 || (opts_set->x_flag_use_linker_plugin
kono
parents: 67
diff changeset
1037 && !opts->x_flag_use_linker_plugin)))
kono
parents: 67
diff changeset
1038 {
kono
parents: 67
diff changeset
1039 if (opts_set->x_flag_fat_lto_objects)
kono
parents: 67
diff changeset
1040 error_at (loc, "%<-fno-fat-lto-objects%> are supported only with "
kono
parents: 67
diff changeset
1041 "linker plugin");
kono
parents: 67
diff changeset
1042 opts->x_flag_fat_lto_objects = 1;
kono
parents: 67
diff changeset
1043 }
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1044
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1045 /* -gsplit-dwarf isn't compatible with LTO, see PR88389. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1046 if (opts->x_dwarf_split_debug_info)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1047 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1048 inform (loc, "%<-gsplit-dwarf%> is not supported with LTO,"
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1049 " disabling");
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1050 opts->x_dwarf_split_debug_info = 0;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1051 }
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1052 }
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
1053
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1054 /* We initialize opts->x_flag_split_stack to -1 so that targets can set a
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1055 default value if they choose based on other options. */
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1056 if (opts->x_flag_split_stack == -1)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1057 opts->x_flag_split_stack = 0;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1058 else if (opts->x_flag_split_stack)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1059 {
111
kono
parents: 67
diff changeset
1060 if (!targetm_common.supports_split_stack (true, opts))
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1061 {
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1062 error_at (loc, "%<-fsplit-stack%> is not supported by "
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1063 "this compiler configuration");
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1064 opts->x_flag_split_stack = 0;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1065 }
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1066 }
111
kono
parents: 67
diff changeset
1067
kono
parents: 67
diff changeset
1068 /* If stack splitting is turned on, and the user did not explicitly
kono
parents: 67
diff changeset
1069 request function partitioning, turn off partitioning, as it
kono
parents: 67
diff changeset
1070 confuses the linker when trying to handle partitioned split-stack
kono
parents: 67
diff changeset
1071 code that calls a non-split-stack functions. But if partitioning
kono
parents: 67
diff changeset
1072 was turned on explicitly just hope for the best. */
kono
parents: 67
diff changeset
1073 if (opts->x_flag_split_stack
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1074 && opts->x_flag_reorder_blocks_and_partition)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1075 SET_OPTION_IF_UNSET (opts, opts_set, flag_reorder_blocks_and_partition, 0);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1076
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1077 if (opts->x_flag_reorder_blocks_and_partition)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1078 SET_OPTION_IF_UNSET (opts, opts_set, flag_reorder_functions, 1);
111
kono
parents: 67
diff changeset
1079
kono
parents: 67
diff changeset
1080 /* The -gsplit-dwarf option requires -ggnu-pubnames. */
kono
parents: 67
diff changeset
1081 if (opts->x_dwarf_split_debug_info)
kono
parents: 67
diff changeset
1082 opts->x_debug_generate_pub_sections = 2;
kono
parents: 67
diff changeset
1083
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1084 if ((opts->x_flag_sanitize
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1085 & (SANITIZE_USER_ADDRESS | SANITIZE_KERNEL_ADDRESS)) == 0)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1086 {
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1087 if (opts->x_flag_sanitize & SANITIZE_POINTER_COMPARE)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1088 error_at (loc,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1089 "%<-fsanitize=pointer-compare%> must be combined with "
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1090 "%<-fsanitize=address%> or %<-fsanitize=kernel-address%>");
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1091 if (opts->x_flag_sanitize & SANITIZE_POINTER_SUBTRACT)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1092 error_at (loc,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1093 "%<-fsanitize=pointer-subtract%> must be combined with "
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1094 "%<-fsanitize=address%> or %<-fsanitize=kernel-address%>");
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1095 }
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1096
111
kono
parents: 67
diff changeset
1097 /* Userspace and kernel ASan conflict with each other. */
kono
parents: 67
diff changeset
1098 if ((opts->x_flag_sanitize & SANITIZE_USER_ADDRESS)
kono
parents: 67
diff changeset
1099 && (opts->x_flag_sanitize & SANITIZE_KERNEL_ADDRESS))
kono
parents: 67
diff changeset
1100 error_at (loc,
kono
parents: 67
diff changeset
1101 "%<-fsanitize=address%> is incompatible with "
kono
parents: 67
diff changeset
1102 "%<-fsanitize=kernel-address%>");
kono
parents: 67
diff changeset
1103
kono
parents: 67
diff changeset
1104 /* And with TSan. */
kono
parents: 67
diff changeset
1105 if ((opts->x_flag_sanitize & SANITIZE_ADDRESS)
kono
parents: 67
diff changeset
1106 && (opts->x_flag_sanitize & SANITIZE_THREAD))
kono
parents: 67
diff changeset
1107 error_at (loc,
kono
parents: 67
diff changeset
1108 "%<-fsanitize=address%> and %<-fsanitize=kernel-address%> "
kono
parents: 67
diff changeset
1109 "are incompatible with %<-fsanitize=thread%>");
kono
parents: 67
diff changeset
1110
kono
parents: 67
diff changeset
1111 if ((opts->x_flag_sanitize & SANITIZE_LEAK)
kono
parents: 67
diff changeset
1112 && (opts->x_flag_sanitize & SANITIZE_THREAD))
kono
parents: 67
diff changeset
1113 error_at (loc,
kono
parents: 67
diff changeset
1114 "%<-fsanitize=leak%> is incompatible with %<-fsanitize=thread%>");
kono
parents: 67
diff changeset
1115
kono
parents: 67
diff changeset
1116 /* Check error recovery for -fsanitize-recover option. */
kono
parents: 67
diff changeset
1117 for (int i = 0; sanitizer_opts[i].name != NULL; ++i)
kono
parents: 67
diff changeset
1118 if ((opts->x_flag_sanitize_recover & sanitizer_opts[i].flag)
kono
parents: 67
diff changeset
1119 && !sanitizer_opts[i].can_recover)
kono
parents: 67
diff changeset
1120 error_at (loc, "%<-fsanitize-recover=%s%> is not supported",
kono
parents: 67
diff changeset
1121 sanitizer_opts[i].name);
kono
parents: 67
diff changeset
1122
kono
parents: 67
diff changeset
1123 /* When instrumenting the pointers, we don't want to remove
kono
parents: 67
diff changeset
1124 the null pointer checks. */
kono
parents: 67
diff changeset
1125 if (opts->x_flag_sanitize & (SANITIZE_NULL | SANITIZE_NONNULL_ATTRIBUTE
kono
parents: 67
diff changeset
1126 | SANITIZE_RETURNS_NONNULL_ATTRIBUTE))
kono
parents: 67
diff changeset
1127 opts->x_flag_delete_null_pointer_checks = 0;
kono
parents: 67
diff changeset
1128
kono
parents: 67
diff changeset
1129 /* Aggressive compiler optimizations may cause false negatives. */
kono
parents: 67
diff changeset
1130 if (opts->x_flag_sanitize & ~(SANITIZE_LEAK | SANITIZE_UNREACHABLE))
kono
parents: 67
diff changeset
1131 opts->x_flag_aggressive_loop_optimizations = 0;
kono
parents: 67
diff changeset
1132
kono
parents: 67
diff changeset
1133 /* Enable -fsanitize-address-use-after-scope if address sanitizer is
kono
parents: 67
diff changeset
1134 enabled. */
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1135 if (opts->x_flag_sanitize & SANITIZE_USER_ADDRESS)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1136 SET_OPTION_IF_UNSET (opts, opts_set, flag_sanitize_address_use_after_scope,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1137 true);
111
kono
parents: 67
diff changeset
1138
kono
parents: 67
diff changeset
1139 /* Force -fstack-reuse=none in case -fsanitize-address-use-after-scope
kono
parents: 67
diff changeset
1140 is enabled. */
kono
parents: 67
diff changeset
1141 if (opts->x_flag_sanitize_address_use_after_scope)
kono
parents: 67
diff changeset
1142 {
kono
parents: 67
diff changeset
1143 if (opts->x_flag_stack_reuse != SR_NONE
kono
parents: 67
diff changeset
1144 && opts_set->x_flag_stack_reuse != SR_NONE)
kono
parents: 67
diff changeset
1145 error_at (loc,
kono
parents: 67
diff changeset
1146 "%<-fsanitize-address-use-after-scope%> requires "
kono
parents: 67
diff changeset
1147 "%<-fstack-reuse=none%> option");
kono
parents: 67
diff changeset
1148
kono
parents: 67
diff changeset
1149 opts->x_flag_stack_reuse = SR_NONE;
kono
parents: 67
diff changeset
1150 }
kono
parents: 67
diff changeset
1151
kono
parents: 67
diff changeset
1152 if ((opts->x_flag_sanitize & SANITIZE_USER_ADDRESS) && opts->x_flag_tm)
kono
parents: 67
diff changeset
1153 sorry ("transactional memory is not supported with %<-fsanitize=address%>");
kono
parents: 67
diff changeset
1154
kono
parents: 67
diff changeset
1155 if ((opts->x_flag_sanitize & SANITIZE_KERNEL_ADDRESS) && opts->x_flag_tm)
kono
parents: 67
diff changeset
1156 sorry ("transactional memory is not supported with "
kono
parents: 67
diff changeset
1157 "%<-fsanitize=kernel-address%>");
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1158
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1159 /* Currently live patching is not support for LTO. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1160 if (opts->x_flag_live_patching && opts->x_flag_lto)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1161 sorry ("live patching is not supported with LTO");
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1162
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1163 /* Currently vtable verification is not supported for LTO */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1164 if (opts->x_flag_vtable_verify && opts->x_flag_lto)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1165 sorry ("vtable verification is not supported with LTO");
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1166
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1167 /* Control IPA optimizations based on different -flive-patching level. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1168 if (opts->x_flag_live_patching)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1169 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1170 control_options_for_live_patching (opts, opts_set,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1171 opts->x_flag_live_patching,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1172 loc);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1173 }
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1174 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1175
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1176 #define LEFT_COLUMN 27
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1177
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1178 /* Output ITEM, of length ITEM_WIDTH, in the left column,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1179 followed by word-wrapped HELP in a second column. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1180 static void
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1181 wrap_help (const char *help,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1182 const char *item,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1183 unsigned int item_width,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1184 unsigned int columns)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1185 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1186 unsigned int col_width = LEFT_COLUMN;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1187 unsigned int remaining, room, len;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1188
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1189 remaining = strlen (help);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1190
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1191 do
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1192 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1193 room = columns - 3 - MAX (col_width, item_width);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1194 if (room > columns)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1195 room = 0;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1196 len = remaining;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1197
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1198 if (room < len)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1199 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1200 unsigned int i;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1201
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1202 for (i = 0; help[i]; i++)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1203 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1204 if (i >= room && len != remaining)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1205 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1206 if (help[i] == ' ')
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1207 len = i;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1208 else if ((help[i] == '-' || help[i] == '/')
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1209 && help[i + 1] != ' '
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1210 && i > 0 && ISALPHA (help[i - 1]))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1211 len = i + 1;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1212 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1213 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1214
111
kono
parents: 67
diff changeset
1215 printf (" %-*.*s %.*s\n", col_width, item_width, item, len, help);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1216 item_width = 0;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1217 while (help[len] == ' ')
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1218 len++;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1219 help += len;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1220 remaining -= len;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1221 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1222 while (remaining);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1223 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1224
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1225 /* Data structure used to print list of valid option values. */
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1226
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1227 class option_help_tuple
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1228 {
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1229 public:
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1230 option_help_tuple (int code, vec<const char *> values):
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1231 m_code (code), m_values (values)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1232 {}
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1233
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1234 /* Code of an option. */
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1235 int m_code;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1236
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1237 /* List of possible values. */
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1238 vec<const char *> m_values;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1239 };
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1240
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1241 /* Print help for a specific front-end, etc. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1242 static void
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1243 print_filtered_help (unsigned int include_flags,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1244 unsigned int exclude_flags,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1245 unsigned int any_flags,
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1246 unsigned int columns,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1247 struct gcc_options *opts,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1248 unsigned int lang_mask)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1249 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1250 unsigned int i;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1251 const char *help;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1252 bool found = false;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1253 bool displayed = false;
111
kono
parents: 67
diff changeset
1254 char new_help[256];
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1255
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1256 if (!opts->x_help_printed)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1257 opts->x_help_printed = XCNEWVAR (char, cl_options_count);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1258
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1259 if (!opts->x_help_enum_printed)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1260 opts->x_help_enum_printed = XCNEWVAR (char, cl_enums_count);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1261
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1262 auto_vec<option_help_tuple> help_tuples;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1263
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1264 for (i = 0; i < cl_options_count; i++)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1265 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1266 const struct cl_option *option = cl_options + i;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1267 unsigned int len;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1268 const char *opt;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1269 const char *tab;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1270
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1271 if (include_flags == 0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1272 || ((option->flags & include_flags) != include_flags))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1273 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1274 if ((option->flags & any_flags) == 0)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1275 continue;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1276 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1277
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1278 /* Skip unwanted switches. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1279 if ((option->flags & exclude_flags) != 0)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1280 continue;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1281
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1282 /* The driver currently prints its own help text. */
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1283 if ((option->flags & CL_DRIVER) != 0
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1284 && (option->flags & (((1U << cl_lang_count) - 1)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1285 | CL_COMMON | CL_TARGET)) == 0)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1286 continue;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1287
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1288 /* If an option contains a language specification,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1289 exclude it from common unless all languages are present. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1290 if ((include_flags & CL_COMMON)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1291 && !(option->flags & CL_DRIVER)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1292 && (option->flags & CL_LANG_ALL)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1293 && (option->flags & CL_LANG_ALL) != CL_LANG_ALL)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1294 continue;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1295
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1296 found = true;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1297 /* Skip switches that have already been printed. */
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1298 if (opts->x_help_printed[i])
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1299 continue;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1300
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1301 opts->x_help_printed[i] = true;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1302
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1303 help = option->help;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1304 if (help == NULL)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1305 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1306 if (exclude_flags & CL_UNDOCUMENTED)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1307 continue;
111
kono
parents: 67
diff changeset
1308
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1309 help = undocumented_msg;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1310 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1311
111
kono
parents: 67
diff changeset
1312 if (option->alias_target < N_OPTS
kono
parents: 67
diff changeset
1313 && cl_options [option->alias_target].help)
kono
parents: 67
diff changeset
1314 {
kono
parents: 67
diff changeset
1315 if (help == undocumented_msg)
kono
parents: 67
diff changeset
1316 {
kono
parents: 67
diff changeset
1317 /* For undocumented options that are aliases for other options
kono
parents: 67
diff changeset
1318 that are documented, point the reader to the other option in
kono
parents: 67
diff changeset
1319 preference of the former. */
kono
parents: 67
diff changeset
1320 snprintf (new_help, sizeof new_help,
kono
parents: 67
diff changeset
1321 _("Same as %s. Use the latter option instead."),
kono
parents: 67
diff changeset
1322 cl_options [option->alias_target].opt_text);
kono
parents: 67
diff changeset
1323 }
kono
parents: 67
diff changeset
1324 else
kono
parents: 67
diff changeset
1325 {
kono
parents: 67
diff changeset
1326 /* For documented options with aliases, mention the aliased
kono
parents: 67
diff changeset
1327 option's name for reference. */
kono
parents: 67
diff changeset
1328 snprintf (new_help, sizeof new_help,
kono
parents: 67
diff changeset
1329 _("%s Same as %s."),
kono
parents: 67
diff changeset
1330 help, cl_options [option->alias_target].opt_text);
kono
parents: 67
diff changeset
1331 }
kono
parents: 67
diff changeset
1332
kono
parents: 67
diff changeset
1333 help = new_help;
kono
parents: 67
diff changeset
1334 }
kono
parents: 67
diff changeset
1335
kono
parents: 67
diff changeset
1336 if (option->warn_message)
kono
parents: 67
diff changeset
1337 {
kono
parents: 67
diff changeset
1338 /* Mention that the use of the option will trigger a warning. */
kono
parents: 67
diff changeset
1339 if (help == new_help)
kono
parents: 67
diff changeset
1340 snprintf (new_help + strlen (new_help),
kono
parents: 67
diff changeset
1341 sizeof new_help - strlen (new_help),
kono
parents: 67
diff changeset
1342 " %s", _(use_diagnosed_msg));
kono
parents: 67
diff changeset
1343 else
kono
parents: 67
diff changeset
1344 snprintf (new_help, sizeof new_help,
kono
parents: 67
diff changeset
1345 "%s %s", help, _(use_diagnosed_msg));
kono
parents: 67
diff changeset
1346
kono
parents: 67
diff changeset
1347 help = new_help;
kono
parents: 67
diff changeset
1348 }
kono
parents: 67
diff changeset
1349
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1350 /* Get the translation. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1351 help = _(help);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1352
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1353 /* Find the gap between the name of the
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1354 option and its descriptive text. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1355 tab = strchr (help, '\t');
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1356 if (tab)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1357 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1358 len = tab - help;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1359 opt = help;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1360 help = tab + 1;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1361 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1362 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1363 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1364 opt = option->opt_text;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1365 len = strlen (opt);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1366 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1367
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1368 /* With the -Q option enabled we change the descriptive text associated
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1369 with an option to be an indication of its current setting. */
111
kono
parents: 67
diff changeset
1370 if (!opts->x_quiet_flag)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1371 {
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1372 void *flag_var = option_flag_var (i, opts);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1373
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1374 if (len < (LEFT_COLUMN + 2))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1375 strcpy (new_help, "\t\t");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1376 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1377 strcpy (new_help, "\t");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1378
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1379 /* Set to print whether the option is enabled or disabled,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1380 or, if it's an alias for another option, the name of
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1381 the aliased option. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1382 bool print_state = false;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1383
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1384 if (flag_var != NULL
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1385 && option->var_type != CLVC_DEFER)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1386 {
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1387 /* If OPTION is only available for a specific subset
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1388 of languages other than this one, mention them. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1389 bool avail_for_lang = true;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1390 if (unsigned langset = option->flags & CL_LANG_ALL)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1391 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1392 if (!(langset & lang_mask))
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1393 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1394 avail_for_lang = false;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1395 strcat (new_help, _("[available in "));
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1396 for (unsigned i = 0, n = 0; (1U << i) < CL_LANG_ALL; ++i)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1397 if (langset & (1U << i))
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1398 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1399 if (n++)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1400 strcat (new_help, ", ");
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1401 strcat (new_help, lang_names[i]);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1402 }
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1403 strcat (new_help, "]");
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1404 }
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1405 }
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1406 if (!avail_for_lang)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1407 ; /* Print nothing else if the option is not available
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1408 in the current language. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1409 else if (option->flags & CL_JOINED)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1410 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1411 if (option->var_type == CLVC_STRING)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1412 {
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1413 if (* (const char **) flag_var != NULL)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1414 snprintf (new_help + strlen (new_help),
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1415 sizeof (new_help) - strlen (new_help),
111
kono
parents: 67
diff changeset
1416 "%s", * (const char **) flag_var);
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1417 }
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1418 else if (option->var_type == CLVC_ENUM)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1419 {
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1420 const struct cl_enum *e = &cl_enums[option->var_enum];
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1421 int value;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1422 const char *arg = NULL;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1423
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1424 value = e->get (flag_var);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1425 enum_value_to_arg (e->values, &arg, value, lang_mask);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1426 if (arg == NULL)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1427 arg = _("[default]");
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1428 snprintf (new_help + strlen (new_help),
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1429 sizeof (new_help) - strlen (new_help),
111
kono
parents: 67
diff changeset
1430 "%s", arg);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1431 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1432 else
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1433 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1434 if (option->cl_host_wide_int)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1435 sprintf (new_help + strlen (new_help),
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1436 _("%llu bytes"), (unsigned long long)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1437 *(unsigned HOST_WIDE_INT *) flag_var);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1438 else
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1439 sprintf (new_help + strlen (new_help),
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1440 "%i", * (int *) flag_var);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1441 }
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1442 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1443 else
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1444 print_state = true;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1445 }
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1446 else
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1447 /* When there is no argument, print the option state only
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1448 if the option takes no argument. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1449 print_state = !(option->flags & CL_JOINED);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1450
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1451 if (print_state)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1452 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1453 if (option->alias_target < N_OPTS
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1454 && option->alias_target != OPT_SPECIAL_warn_removed
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1455 && option->alias_target != OPT_SPECIAL_ignore
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1456 && option->alias_target != OPT_SPECIAL_input_file
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1457 && option->alias_target != OPT_SPECIAL_program_name
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1458 && option->alias_target != OPT_SPECIAL_unknown)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1459 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1460 const struct cl_option *target
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1461 = &cl_options[option->alias_target];
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1462 sprintf (new_help + strlen (new_help), "%s%s",
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1463 target->opt_text,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1464 option->alias_arg ? option->alias_arg : "");
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1465 }
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1466 else if (option->alias_target == OPT_SPECIAL_ignore)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1467 strcat (new_help, ("[ignored]"));
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1468 else
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1469 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1470 /* Print the state for an on/off option. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1471 int ena = option_enabled (i, lang_mask, opts);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1472 if (ena > 0)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1473 strcat (new_help, _("[enabled]"));
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1474 else if (ena == 0)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1475 strcat (new_help, _("[disabled]"));
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1476 }
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1477 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1478
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1479 help = new_help;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1480 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1481
111
kono
parents: 67
diff changeset
1482 if (option->range_max != -1)
kono
parents: 67
diff changeset
1483 {
kono
parents: 67
diff changeset
1484 char b[128];
kono
parents: 67
diff changeset
1485 snprintf (b, sizeof (b), "<%d,%d>", option->range_min,
kono
parents: 67
diff changeset
1486 option->range_max);
kono
parents: 67
diff changeset
1487 opt = concat (opt, b, NULL);
kono
parents: 67
diff changeset
1488 len += strlen (b);
kono
parents: 67
diff changeset
1489 }
kono
parents: 67
diff changeset
1490
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1491 wrap_help (help, opt, len, columns);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1492 displayed = true;
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1493
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1494 if (option->var_type == CLVC_ENUM
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1495 && opts->x_help_enum_printed[option->var_enum] != 2)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1496 opts->x_help_enum_printed[option->var_enum] = 1;
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1497 else
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1498 {
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1499 vec<const char *> option_values
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1500 = targetm_common.get_valid_option_values (i, NULL);
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1501 if (!option_values.is_empty ())
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1502 help_tuples.safe_push (option_help_tuple (i, option_values));
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1503 }
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1504 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1505
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1506 if (! found)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1507 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1508 unsigned int langs = include_flags & CL_LANG_ALL;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1509
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1510 if (langs == 0)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1511 printf (_(" No options with the desired characteristics were found\n"));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1512 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1513 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1514 unsigned int i;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1515
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1516 /* PR 31349: Tell the user how to see all of the
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1517 options supported by a specific front end. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1518 for (i = 0; (1U << i) < CL_LANG_ALL; i ++)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1519 if ((1U << i) & langs)
111
kono
parents: 67
diff changeset
1520 printf (_(" None found. Use --help=%s to show *all* the options supported by the %s front-end.\n"),
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1521 lang_names[i], lang_names[i]);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1522 }
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
1523
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1524 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1525 else if (! displayed)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1526 printf (_(" All options with the desired characteristics have already been displayed\n"));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1527
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1528 putchar ('\n');
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1529
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1530 /* Print details of enumerated option arguments, if those
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1531 enumerations have help text headings provided. If no help text
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1532 is provided, presume that the possible values are listed in the
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1533 help text for the relevant options. */
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1534 for (i = 0; i < cl_enums_count; i++)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1535 {
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1536 unsigned int j, pos;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1537
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1538 if (opts->x_help_enum_printed[i] != 1)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1539 continue;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1540 if (cl_enums[i].help == NULL)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1541 continue;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1542 printf (" %s\n ", _(cl_enums[i].help));
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1543 pos = 4;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1544 for (j = 0; cl_enums[i].values[j].arg != NULL; j++)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1545 {
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1546 unsigned int len = strlen (cl_enums[i].values[j].arg);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1547
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1548 if (pos > 4 && pos + 1 + len <= columns)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1549 {
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1550 printf (" %s", cl_enums[i].values[j].arg);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1551 pos += 1 + len;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1552 }
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1553 else
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1554 {
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1555 if (pos > 4)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1556 {
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1557 printf ("\n ");
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1558 pos = 4;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1559 }
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1560 printf ("%s", cl_enums[i].values[j].arg);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1561 pos += len;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1562 }
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1563 }
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1564 printf ("\n\n");
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1565 opts->x_help_enum_printed[i] = 2;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1566 }
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1567
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1568 for (unsigned i = 0; i < help_tuples.length (); i++)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1569 {
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1570 const struct cl_option *option = cl_options + help_tuples[i].m_code;
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1571 printf (_(" Known valid arguments for %s option:\n "),
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1572 option->opt_text);
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1573 for (unsigned j = 0; j < help_tuples[i].m_values.length (); j++)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1574 printf (" %s", help_tuples[i].m_values[j]);
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1575 printf ("\n\n");
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1576 }
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1577 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1578
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1579 /* Display help for a specified type of option.
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1580 The options must have ALL of the INCLUDE_FLAGS set
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1581 ANY of the flags in the ANY_FLAGS set
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1582 and NONE of the EXCLUDE_FLAGS set. The current option state is in
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1583 OPTS; LANG_MASK is used for interpreting enumerated option state. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1584 static void
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1585 print_specific_help (unsigned int include_flags,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1586 unsigned int exclude_flags,
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1587 unsigned int any_flags,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1588 struct gcc_options *opts,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1589 unsigned int lang_mask)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1590 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1591 unsigned int all_langs_mask = (1U << cl_lang_count) - 1;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1592 const char * description = NULL;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1593 const char * descrip_extra = "";
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1594 size_t i;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1595 unsigned int flag;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1596
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1597 /* Sanity check: Make sure that we do not have more
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1598 languages than we have bits available to enumerate them. */
111
kono
parents: 67
diff changeset
1599 gcc_assert ((1U << cl_lang_count) <= CL_MIN_OPTION_CLASS);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1600
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1601 /* If we have not done so already, obtain
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1602 the desired maximum width of the output. */
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1603 if (opts->x_help_columns == 0)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1604 {
111
kono
parents: 67
diff changeset
1605 opts->x_help_columns = get_terminal_width ();
kono
parents: 67
diff changeset
1606 if (opts->x_help_columns == INT_MAX)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1607 /* Use a reasonable default. */
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1608 opts->x_help_columns = 80;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1609 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1610
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1611 /* Decide upon the title for the options that we are going to display. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1612 for (i = 0, flag = 1; flag <= CL_MAX_OPTION_CLASS; flag <<= 1, i ++)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1613 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1614 switch (flag & include_flags)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1615 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1616 case 0:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1617 case CL_DRIVER:
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1618 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1619
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1620 case CL_TARGET:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1621 description = _("The following options are target specific");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1622 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1623 case CL_WARNING:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1624 description = _("The following options control compiler warning messages");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1625 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1626 case CL_OPTIMIZATION:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1627 description = _("The following options control optimizations");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1628 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1629 case CL_COMMON:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1630 description = _("The following options are language-independent");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1631 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1632 case CL_PARAMS:
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1633 description = _("The following options control parameters");
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1634 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1635 default:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1636 if (i >= cl_lang_count)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1637 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1638 if (exclude_flags & all_langs_mask)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1639 description = _("The following options are specific to just the language ");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1640 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1641 description = _("The following options are supported by the language ");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1642 descrip_extra = lang_names [i];
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1643 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1644 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1645 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1646
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1647 if (description == NULL)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1648 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1649 if (any_flags == 0)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1650 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1651 if (include_flags & CL_UNDOCUMENTED)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1652 description = _("The following options are not documented");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1653 else if (include_flags & CL_SEPARATE)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1654 description = _("The following options take separate arguments");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1655 else if (include_flags & CL_JOINED)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1656 description = _("The following options take joined arguments");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1657 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1658 {
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1659 internal_error ("unrecognized %<include_flags 0x%x%> passed "
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1660 "to %<print_specific_help%>",
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1661 include_flags);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1662 return;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1663 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1664 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1665 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1666 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1667 if (any_flags & all_langs_mask)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1668 description = _("The following options are language-related");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1669 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1670 description = _("The following options are language-independent");
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1671 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1672 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1673
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1674 printf ("%s%s:\n", description, descrip_extra);
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1675 print_filtered_help (include_flags, exclude_flags, any_flags,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
1676 opts->x_help_columns, opts, lang_mask);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1677 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1678
111
kono
parents: 67
diff changeset
1679 /* Enable FDO-related flags. */
kono
parents: 67
diff changeset
1680
kono
parents: 67
diff changeset
1681 static void
kono
parents: 67
diff changeset
1682 enable_fdo_optimizations (struct gcc_options *opts,
kono
parents: 67
diff changeset
1683 struct gcc_options *opts_set,
kono
parents: 67
diff changeset
1684 int value)
kono
parents: 67
diff changeset
1685 {
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1686 SET_OPTION_IF_UNSET (opts, opts_set, flag_branch_probabilities, value);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1687 SET_OPTION_IF_UNSET (opts, opts_set, flag_profile_values, value);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1688 SET_OPTION_IF_UNSET (opts, opts_set, flag_unroll_loops, value);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1689 SET_OPTION_IF_UNSET (opts, opts_set, flag_peel_loops, value);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1690 SET_OPTION_IF_UNSET (opts, opts_set, flag_tracer, value);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1691 SET_OPTION_IF_UNSET (opts, opts_set, flag_value_profile_transformations,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1692 value);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1693 SET_OPTION_IF_UNSET (opts, opts_set, flag_inline_functions, value);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1694 SET_OPTION_IF_UNSET (opts, opts_set, flag_ipa_cp, value);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1695 if (value)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1696 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1697 SET_OPTION_IF_UNSET (opts, opts_set, flag_ipa_cp_clone, 1);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1698 SET_OPTION_IF_UNSET (opts, opts_set, flag_ipa_bit_cp, 1);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1699 }
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1700 SET_OPTION_IF_UNSET (opts, opts_set, flag_predictive_commoning, value);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1701 SET_OPTION_IF_UNSET (opts, opts_set, flag_split_loops, value);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1702 SET_OPTION_IF_UNSET (opts, opts_set, flag_unswitch_loops, value);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1703 SET_OPTION_IF_UNSET (opts, opts_set, flag_gcse_after_reload, value);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1704 SET_OPTION_IF_UNSET (opts, opts_set, flag_tree_loop_vectorize, value);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1705 SET_OPTION_IF_UNSET (opts, opts_set, flag_tree_slp_vectorize, value);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1706 SET_OPTION_IF_UNSET (opts, opts_set, flag_version_loops_for_strides, value);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1707 SET_OPTION_IF_UNSET (opts, opts_set, flag_vect_cost_model,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1708 VECT_COST_MODEL_DYNAMIC);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1709 SET_OPTION_IF_UNSET (opts, opts_set, flag_tree_loop_distribute_patterns,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1710 value);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1711 SET_OPTION_IF_UNSET (opts, opts_set, flag_loop_interchange, value);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1712 SET_OPTION_IF_UNSET (opts, opts_set, flag_unroll_jam, value);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1713 SET_OPTION_IF_UNSET (opts, opts_set, flag_tree_loop_distribution, value);
111
kono
parents: 67
diff changeset
1714 }
kono
parents: 67
diff changeset
1715
kono
parents: 67
diff changeset
1716 /* -f{,no-}sanitize{,-recover}= suboptions. */
kono
parents: 67
diff changeset
1717 const struct sanitizer_opts_s sanitizer_opts[] =
kono
parents: 67
diff changeset
1718 {
kono
parents: 67
diff changeset
1719 #define SANITIZER_OPT(name, flags, recover) \
kono
parents: 67
diff changeset
1720 { #name, flags, sizeof #name - 1, recover }
kono
parents: 67
diff changeset
1721 SANITIZER_OPT (address, (SANITIZE_ADDRESS | SANITIZE_USER_ADDRESS), true),
kono
parents: 67
diff changeset
1722 SANITIZER_OPT (kernel-address, (SANITIZE_ADDRESS | SANITIZE_KERNEL_ADDRESS),
kono
parents: 67
diff changeset
1723 true),
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1724 SANITIZER_OPT (pointer-compare, SANITIZE_POINTER_COMPARE, true),
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1725 SANITIZER_OPT (pointer-subtract, SANITIZE_POINTER_SUBTRACT, true),
111
kono
parents: 67
diff changeset
1726 SANITIZER_OPT (thread, SANITIZE_THREAD, false),
kono
parents: 67
diff changeset
1727 SANITIZER_OPT (leak, SANITIZE_LEAK, false),
kono
parents: 67
diff changeset
1728 SANITIZER_OPT (shift, SANITIZE_SHIFT, true),
kono
parents: 67
diff changeset
1729 SANITIZER_OPT (shift-base, SANITIZE_SHIFT_BASE, true),
kono
parents: 67
diff changeset
1730 SANITIZER_OPT (shift-exponent, SANITIZE_SHIFT_EXPONENT, true),
kono
parents: 67
diff changeset
1731 SANITIZER_OPT (integer-divide-by-zero, SANITIZE_DIVIDE, true),
kono
parents: 67
diff changeset
1732 SANITIZER_OPT (undefined, SANITIZE_UNDEFINED, true),
kono
parents: 67
diff changeset
1733 SANITIZER_OPT (unreachable, SANITIZE_UNREACHABLE, false),
kono
parents: 67
diff changeset
1734 SANITIZER_OPT (vla-bound, SANITIZE_VLA, true),
kono
parents: 67
diff changeset
1735 SANITIZER_OPT (return, SANITIZE_RETURN, false),
kono
parents: 67
diff changeset
1736 SANITIZER_OPT (null, SANITIZE_NULL, true),
kono
parents: 67
diff changeset
1737 SANITIZER_OPT (signed-integer-overflow, SANITIZE_SI_OVERFLOW, true),
kono
parents: 67
diff changeset
1738 SANITIZER_OPT (bool, SANITIZE_BOOL, true),
kono
parents: 67
diff changeset
1739 SANITIZER_OPT (enum, SANITIZE_ENUM, true),
kono
parents: 67
diff changeset
1740 SANITIZER_OPT (float-divide-by-zero, SANITIZE_FLOAT_DIVIDE, true),
kono
parents: 67
diff changeset
1741 SANITIZER_OPT (float-cast-overflow, SANITIZE_FLOAT_CAST, true),
kono
parents: 67
diff changeset
1742 SANITIZER_OPT (bounds, SANITIZE_BOUNDS, true),
kono
parents: 67
diff changeset
1743 SANITIZER_OPT (bounds-strict, SANITIZE_BOUNDS | SANITIZE_BOUNDS_STRICT, true),
kono
parents: 67
diff changeset
1744 SANITIZER_OPT (alignment, SANITIZE_ALIGNMENT, true),
kono
parents: 67
diff changeset
1745 SANITIZER_OPT (nonnull-attribute, SANITIZE_NONNULL_ATTRIBUTE, true),
kono
parents: 67
diff changeset
1746 SANITIZER_OPT (returns-nonnull-attribute, SANITIZE_RETURNS_NONNULL_ATTRIBUTE,
kono
parents: 67
diff changeset
1747 true),
kono
parents: 67
diff changeset
1748 SANITIZER_OPT (object-size, SANITIZE_OBJECT_SIZE, true),
kono
parents: 67
diff changeset
1749 SANITIZER_OPT (vptr, SANITIZE_VPTR, true),
kono
parents: 67
diff changeset
1750 SANITIZER_OPT (pointer-overflow, SANITIZE_POINTER_OVERFLOW, true),
kono
parents: 67
diff changeset
1751 SANITIZER_OPT (builtin, SANITIZE_BUILTIN, true),
kono
parents: 67
diff changeset
1752 SANITIZER_OPT (all, ~0U, true),
kono
parents: 67
diff changeset
1753 #undef SANITIZER_OPT
kono
parents: 67
diff changeset
1754 { NULL, 0U, 0UL, false }
kono
parents: 67
diff changeset
1755 };
kono
parents: 67
diff changeset
1756
kono
parents: 67
diff changeset
1757 /* -f{,no-}sanitize-coverage= suboptions. */
kono
parents: 67
diff changeset
1758 const struct sanitizer_opts_s coverage_sanitizer_opts[] =
kono
parents: 67
diff changeset
1759 {
kono
parents: 67
diff changeset
1760 #define COVERAGE_SANITIZER_OPT(name, flags) \
kono
parents: 67
diff changeset
1761 { #name, flags, sizeof #name - 1, true }
kono
parents: 67
diff changeset
1762 COVERAGE_SANITIZER_OPT (trace-pc, SANITIZE_COV_TRACE_PC),
kono
parents: 67
diff changeset
1763 COVERAGE_SANITIZER_OPT (trace-cmp, SANITIZE_COV_TRACE_CMP),
kono
parents: 67
diff changeset
1764 #undef COVERAGE_SANITIZER_OPT
kono
parents: 67
diff changeset
1765 { NULL, 0U, 0UL, false }
kono
parents: 67
diff changeset
1766 };
kono
parents: 67
diff changeset
1767
kono
parents: 67
diff changeset
1768 /* A struct for describing a run of chars within a string. */
kono
parents: 67
diff changeset
1769
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1770 class string_fragment
111
kono
parents: 67
diff changeset
1771 {
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1772 public:
111
kono
parents: 67
diff changeset
1773 string_fragment (const char *start, size_t len)
kono
parents: 67
diff changeset
1774 : m_start (start), m_len (len) {}
kono
parents: 67
diff changeset
1775
kono
parents: 67
diff changeset
1776 const char *m_start;
kono
parents: 67
diff changeset
1777 size_t m_len;
kono
parents: 67
diff changeset
1778 };
kono
parents: 67
diff changeset
1779
kono
parents: 67
diff changeset
1780 /* Specialization of edit_distance_traits for string_fragment,
kono
parents: 67
diff changeset
1781 for use by get_closest_sanitizer_option. */
kono
parents: 67
diff changeset
1782
kono
parents: 67
diff changeset
1783 template <>
kono
parents: 67
diff changeset
1784 struct edit_distance_traits<const string_fragment &>
kono
parents: 67
diff changeset
1785 {
kono
parents: 67
diff changeset
1786 static size_t get_length (const string_fragment &fragment)
kono
parents: 67
diff changeset
1787 {
kono
parents: 67
diff changeset
1788 return fragment.m_len;
kono
parents: 67
diff changeset
1789 }
kono
parents: 67
diff changeset
1790
kono
parents: 67
diff changeset
1791 static const char *get_string (const string_fragment &fragment)
kono
parents: 67
diff changeset
1792 {
kono
parents: 67
diff changeset
1793 return fragment.m_start;
kono
parents: 67
diff changeset
1794 }
kono
parents: 67
diff changeset
1795 };
kono
parents: 67
diff changeset
1796
kono
parents: 67
diff changeset
1797 /* Given ARG, an unrecognized sanitizer option, return the best
kono
parents: 67
diff changeset
1798 matching sanitizer option, or NULL if there isn't one.
kono
parents: 67
diff changeset
1799 OPTS is array of candidate sanitizer options.
kono
parents: 67
diff changeset
1800 CODE is OPT_fsanitize_, OPT_fsanitize_recover_ or
kono
parents: 67
diff changeset
1801 OPT_fsanitize_coverage_.
kono
parents: 67
diff changeset
1802 VALUE is non-zero for the regular form of the option, zero
kono
parents: 67
diff changeset
1803 for the "no-" form (e.g. "-fno-sanitize-recover="). */
kono
parents: 67
diff changeset
1804
kono
parents: 67
diff changeset
1805 static const char *
kono
parents: 67
diff changeset
1806 get_closest_sanitizer_option (const string_fragment &arg,
kono
parents: 67
diff changeset
1807 const struct sanitizer_opts_s *opts,
kono
parents: 67
diff changeset
1808 enum opt_code code, int value)
kono
parents: 67
diff changeset
1809 {
kono
parents: 67
diff changeset
1810 best_match <const string_fragment &, const char*> bm (arg);
kono
parents: 67
diff changeset
1811 for (int i = 0; opts[i].name != NULL; ++i)
kono
parents: 67
diff changeset
1812 {
kono
parents: 67
diff changeset
1813 /* -fsanitize=all is not valid, so don't offer it. */
kono
parents: 67
diff changeset
1814 if (code == OPT_fsanitize_
kono
parents: 67
diff changeset
1815 && opts[i].flag == ~0U
kono
parents: 67
diff changeset
1816 && value)
kono
parents: 67
diff changeset
1817 continue;
kono
parents: 67
diff changeset
1818
kono
parents: 67
diff changeset
1819 /* For -fsanitize-recover= (and not -fno-sanitize-recover=),
kono
parents: 67
diff changeset
1820 don't offer the non-recoverable options. */
kono
parents: 67
diff changeset
1821 if (code == OPT_fsanitize_recover_
kono
parents: 67
diff changeset
1822 && !opts[i].can_recover
kono
parents: 67
diff changeset
1823 && value)
kono
parents: 67
diff changeset
1824 continue;
kono
parents: 67
diff changeset
1825
kono
parents: 67
diff changeset
1826 bm.consider (opts[i].name);
kono
parents: 67
diff changeset
1827 }
kono
parents: 67
diff changeset
1828 return bm.get_best_meaningful_candidate ();
kono
parents: 67
diff changeset
1829 }
kono
parents: 67
diff changeset
1830
kono
parents: 67
diff changeset
1831 /* Parse comma separated sanitizer suboptions from P for option SCODE,
kono
parents: 67
diff changeset
1832 adjust previous FLAGS and return new ones. If COMPLAIN is false,
kono
parents: 67
diff changeset
1833 don't issue diagnostics. */
kono
parents: 67
diff changeset
1834
kono
parents: 67
diff changeset
1835 unsigned int
kono
parents: 67
diff changeset
1836 parse_sanitizer_options (const char *p, location_t loc, int scode,
kono
parents: 67
diff changeset
1837 unsigned int flags, int value, bool complain)
kono
parents: 67
diff changeset
1838 {
kono
parents: 67
diff changeset
1839 enum opt_code code = (enum opt_code) scode;
kono
parents: 67
diff changeset
1840
kono
parents: 67
diff changeset
1841 const struct sanitizer_opts_s *opts;
kono
parents: 67
diff changeset
1842 if (code == OPT_fsanitize_coverage_)
kono
parents: 67
diff changeset
1843 opts = coverage_sanitizer_opts;
kono
parents: 67
diff changeset
1844 else
kono
parents: 67
diff changeset
1845 opts = sanitizer_opts;
kono
parents: 67
diff changeset
1846
kono
parents: 67
diff changeset
1847 while (*p != 0)
kono
parents: 67
diff changeset
1848 {
kono
parents: 67
diff changeset
1849 size_t len, i;
kono
parents: 67
diff changeset
1850 bool found = false;
kono
parents: 67
diff changeset
1851 const char *comma = strchr (p, ',');
kono
parents: 67
diff changeset
1852
kono
parents: 67
diff changeset
1853 if (comma == NULL)
kono
parents: 67
diff changeset
1854 len = strlen (p);
kono
parents: 67
diff changeset
1855 else
kono
parents: 67
diff changeset
1856 len = comma - p;
kono
parents: 67
diff changeset
1857 if (len == 0)
kono
parents: 67
diff changeset
1858 {
kono
parents: 67
diff changeset
1859 p = comma + 1;
kono
parents: 67
diff changeset
1860 continue;
kono
parents: 67
diff changeset
1861 }
kono
parents: 67
diff changeset
1862
kono
parents: 67
diff changeset
1863 /* Check to see if the string matches an option class name. */
kono
parents: 67
diff changeset
1864 for (i = 0; opts[i].name != NULL; ++i)
kono
parents: 67
diff changeset
1865 if (len == opts[i].len && memcmp (p, opts[i].name, len) == 0)
kono
parents: 67
diff changeset
1866 {
kono
parents: 67
diff changeset
1867 /* Handle both -fsanitize and -fno-sanitize cases. */
kono
parents: 67
diff changeset
1868 if (value && opts[i].flag == ~0U)
kono
parents: 67
diff changeset
1869 {
kono
parents: 67
diff changeset
1870 if (code == OPT_fsanitize_)
kono
parents: 67
diff changeset
1871 {
kono
parents: 67
diff changeset
1872 if (complain)
kono
parents: 67
diff changeset
1873 error_at (loc, "%<-fsanitize=all%> option is not valid");
kono
parents: 67
diff changeset
1874 }
kono
parents: 67
diff changeset
1875 else
kono
parents: 67
diff changeset
1876 flags |= ~(SANITIZE_THREAD | SANITIZE_LEAK
kono
parents: 67
diff changeset
1877 | SANITIZE_UNREACHABLE | SANITIZE_RETURN);
kono
parents: 67
diff changeset
1878 }
kono
parents: 67
diff changeset
1879 else if (value)
kono
parents: 67
diff changeset
1880 {
kono
parents: 67
diff changeset
1881 /* Do not enable -fsanitize-recover=unreachable and
kono
parents: 67
diff changeset
1882 -fsanitize-recover=return if -fsanitize-recover=undefined
kono
parents: 67
diff changeset
1883 is selected. */
kono
parents: 67
diff changeset
1884 if (code == OPT_fsanitize_recover_
kono
parents: 67
diff changeset
1885 && opts[i].flag == SANITIZE_UNDEFINED)
kono
parents: 67
diff changeset
1886 flags |= (SANITIZE_UNDEFINED
kono
parents: 67
diff changeset
1887 & ~(SANITIZE_UNREACHABLE | SANITIZE_RETURN));
kono
parents: 67
diff changeset
1888 else
kono
parents: 67
diff changeset
1889 flags |= opts[i].flag;
kono
parents: 67
diff changeset
1890 }
kono
parents: 67
diff changeset
1891 else
kono
parents: 67
diff changeset
1892 flags &= ~opts[i].flag;
kono
parents: 67
diff changeset
1893 found = true;
kono
parents: 67
diff changeset
1894 break;
kono
parents: 67
diff changeset
1895 }
kono
parents: 67
diff changeset
1896
kono
parents: 67
diff changeset
1897 if (! found && complain)
kono
parents: 67
diff changeset
1898 {
kono
parents: 67
diff changeset
1899 const char *hint
kono
parents: 67
diff changeset
1900 = get_closest_sanitizer_option (string_fragment (p, len),
kono
parents: 67
diff changeset
1901 opts, code, value);
kono
parents: 67
diff changeset
1902
kono
parents: 67
diff changeset
1903 const char *suffix;
kono
parents: 67
diff changeset
1904 if (code == OPT_fsanitize_recover_)
kono
parents: 67
diff changeset
1905 suffix = "-recover";
kono
parents: 67
diff changeset
1906 else if (code == OPT_fsanitize_coverage_)
kono
parents: 67
diff changeset
1907 suffix = "-coverage";
kono
parents: 67
diff changeset
1908 else
kono
parents: 67
diff changeset
1909 suffix = "";
kono
parents: 67
diff changeset
1910
kono
parents: 67
diff changeset
1911 if (hint)
kono
parents: 67
diff changeset
1912 error_at (loc,
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1913 "unrecognized argument to %<-f%ssanitize%s=%> "
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1914 "option: %q.*s; did you mean %qs?",
111
kono
parents: 67
diff changeset
1915 value ? "" : "no-",
kono
parents: 67
diff changeset
1916 suffix, (int) len, p, hint);
kono
parents: 67
diff changeset
1917 else
kono
parents: 67
diff changeset
1918 error_at (loc,
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1919 "unrecognized argument to %<-f%ssanitize%s=%> option: "
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1920 "%q.*s", value ? "" : "no-",
111
kono
parents: 67
diff changeset
1921 suffix, (int) len, p);
kono
parents: 67
diff changeset
1922 }
kono
parents: 67
diff changeset
1923
kono
parents: 67
diff changeset
1924 if (comma == NULL)
kono
parents: 67
diff changeset
1925 break;
kono
parents: 67
diff changeset
1926 p = comma + 1;
kono
parents: 67
diff changeset
1927 }
kono
parents: 67
diff changeset
1928 return flags;
kono
parents: 67
diff changeset
1929 }
kono
parents: 67
diff changeset
1930
kono
parents: 67
diff changeset
1931 /* Parse string values of no_sanitize attribute passed in VALUE.
kono
parents: 67
diff changeset
1932 Values are separated with comma. */
kono
parents: 67
diff changeset
1933
kono
parents: 67
diff changeset
1934 unsigned int
kono
parents: 67
diff changeset
1935 parse_no_sanitize_attribute (char *value)
kono
parents: 67
diff changeset
1936 {
kono
parents: 67
diff changeset
1937 unsigned int flags = 0;
kono
parents: 67
diff changeset
1938 unsigned int i;
kono
parents: 67
diff changeset
1939 char *q = strtok (value, ",");
kono
parents: 67
diff changeset
1940
kono
parents: 67
diff changeset
1941 while (q != NULL)
kono
parents: 67
diff changeset
1942 {
kono
parents: 67
diff changeset
1943 for (i = 0; sanitizer_opts[i].name != NULL; ++i)
kono
parents: 67
diff changeset
1944 if (strcmp (sanitizer_opts[i].name, q) == 0)
kono
parents: 67
diff changeset
1945 {
kono
parents: 67
diff changeset
1946 flags |= sanitizer_opts[i].flag;
kono
parents: 67
diff changeset
1947 if (sanitizer_opts[i].flag == SANITIZE_UNDEFINED)
kono
parents: 67
diff changeset
1948 flags |= SANITIZE_UNDEFINED_NONDEFAULT;
kono
parents: 67
diff changeset
1949 break;
kono
parents: 67
diff changeset
1950 }
kono
parents: 67
diff changeset
1951
kono
parents: 67
diff changeset
1952 if (sanitizer_opts[i].name == NULL)
kono
parents: 67
diff changeset
1953 warning (OPT_Wattributes,
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1954 "%qs attribute directive ignored", q);
111
kono
parents: 67
diff changeset
1955
kono
parents: 67
diff changeset
1956 q = strtok (NULL, ",");
kono
parents: 67
diff changeset
1957 }
kono
parents: 67
diff changeset
1958
kono
parents: 67
diff changeset
1959 return flags;
kono
parents: 67
diff changeset
1960 }
kono
parents: 67
diff changeset
1961
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1962 /* Parse -falign-NAME format for a FLAG value. Return individual
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1963 parsed integer values into RESULT_VALUES array. If REPORT_ERROR is
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1964 set, print error message at LOC location. */
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1965
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1966 bool
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1967 parse_and_check_align_values (const char *flag,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1968 const char *name,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1969 auto_vec<unsigned> &result_values,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1970 bool report_error,
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1971 location_t loc)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1972 {
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1973 char *str = xstrdup (flag);
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1974 for (char *p = strtok (str, ":"); p; p = strtok (NULL, ":"))
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1975 {
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1976 char *end;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1977 int v = strtol (p, &end, 10);
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1978 if (*end != '\0' || v < 0)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1979 {
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1980 if (report_error)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1981 error_at (loc, "invalid arguments for %<-falign-%s%> option: %qs",
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1982 name, flag);
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1983
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1984 return false;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1985 }
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1986
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1987 result_values.safe_push ((unsigned)v);
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1988 }
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1989
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1990 free (str);
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1991
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1992 /* Check that we have a correct number of values. */
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
1993 if (result_values.is_empty () || result_values.length () > 4)
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1994 {
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1995 if (report_error)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1996 error_at (loc, "invalid number of arguments for %<-falign-%s%> "
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1997 "option: %qs", name, flag);
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1998 return false;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1999 }
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2000
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2001 for (unsigned i = 0; i < result_values.length (); i++)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2002 if (result_values[i] > MAX_CODE_ALIGN_VALUE)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2003 {
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2004 if (report_error)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2005 error_at (loc, "%<-falign-%s%> is not between 0 and %d",
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2006 name, MAX_CODE_ALIGN_VALUE);
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2007 return false;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2008 }
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2009
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2010 return true;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2011 }
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2012
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2013 /* Check that alignment value FLAG for -falign-NAME is valid at a given
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2014 location LOC. */
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2015
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2016 static void
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2017 check_alignment_argument (location_t loc, const char *flag, const char *name)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2018 {
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2019 auto_vec<unsigned> align_result;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2020 parse_and_check_align_values (flag, name, align_result, true, loc);
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2021 }
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2022
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2023 /* Print help when OPT__help_ is set. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2024
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2025 void
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2026 print_help (struct gcc_options *opts, unsigned int lang_mask,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2027 const char *help_option_argument)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2028 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2029 const char *a = help_option_argument;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2030 unsigned int include_flags = 0;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2031 /* Note - by default we include undocumented options when listing
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2032 specific classes. If you only want to see documented options
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2033 then add ",^undocumented" to the --help= option. E.g.:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2034
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2035 --help=target,^undocumented */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2036 unsigned int exclude_flags = 0;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2037
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2038 if (lang_mask == CL_DRIVER)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2039 return;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2040
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2041 /* Walk along the argument string, parsing each word in turn.
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2042 The format is:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2043 arg = [^]{word}[,{arg}]
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2044 word = {optimizers|target|warnings|undocumented|
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2045 params|common|<language>} */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2046 while (*a != 0)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2047 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2048 static const struct
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2049 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2050 const char *string;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2051 unsigned int flag;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2052 }
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2053 specifics[] =
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2054 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2055 { "optimizers", CL_OPTIMIZATION },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2056 { "target", CL_TARGET },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2057 { "warnings", CL_WARNING },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2058 { "undocumented", CL_UNDOCUMENTED },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2059 { "params", CL_PARAMS },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2060 { "joined", CL_JOINED },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2061 { "separate", CL_SEPARATE },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2062 { "common", CL_COMMON },
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2063 { NULL, 0 }
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2064 };
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2065 unsigned int *pflags;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2066 const char *comma;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2067 unsigned int lang_flag, specific_flag;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2068 unsigned int len;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2069 unsigned int i;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2070
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2071 if (*a == '^')
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2072 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2073 ++a;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2074 if (*a == '\0')
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2075 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2076 error ("missing argument to %qs", "--help=^");
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2077 break;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2078 }
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2079 pflags = &exclude_flags;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2080 }
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2081 else
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2082 pflags = &include_flags;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2083
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2084 comma = strchr (a, ',');
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2085 if (comma == NULL)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2086 len = strlen (a);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2087 else
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2088 len = comma - a;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2089 if (len == 0)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2090 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2091 a = comma + 1;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2092 continue;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2093 }
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2094
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2095 /* Check to see if the string matches an option class name. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2096 for (i = 0, specific_flag = 0; specifics[i].string != NULL; i++)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2097 if (strncasecmp (a, specifics[i].string, len) == 0)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2098 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2099 specific_flag = specifics[i].flag;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2100 break;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2101 }
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2102
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2103 /* Check to see if the string matches a language name.
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2104 Note - we rely upon the alpha-sorted nature of the entries in
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2105 the lang_names array, specifically that shorter names appear
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2106 before their longer variants. (i.e. C before C++). That way
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2107 when we are attempting to match --help=c for example we will
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2108 match with C first and not C++. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2109 for (i = 0, lang_flag = 0; i < cl_lang_count; i++)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2110 if (strncasecmp (a, lang_names[i], len) == 0)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2111 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2112 lang_flag = 1U << i;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2113 break;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2114 }
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2115
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2116 if (specific_flag != 0)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2117 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2118 if (lang_flag == 0)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2119 *pflags |= specific_flag;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2120 else
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2121 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2122 /* The option's argument matches both the start of a
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2123 language name and the start of an option class name.
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2124 We have a special case for when the user has
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2125 specified "--help=c", but otherwise we have to issue
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2126 a warning. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2127 if (strncasecmp (a, "c", len) == 0)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2128 *pflags |= lang_flag;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2129 else
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2130 warning (0,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2131 "%<--help%> argument %q.*s is ambiguous, "
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2132 "please be more specific",
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2133 len, a);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2134 }
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2135 }
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2136 else if (lang_flag != 0)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2137 *pflags |= lang_flag;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2138 else
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2139 warning (0,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2140 "unrecognized argument to %<--help=%> option: %q.*s",
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2141 len, a);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2142
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2143 if (comma == NULL)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2144 break;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2145 a = comma + 1;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2146 }
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2147
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2148 /* We started using PerFunction/Optimization for parameters and
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2149 a warning. We should exclude these from optimization options. */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2150 if (include_flags & CL_OPTIMIZATION)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2151 exclude_flags |= CL_WARNING;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2152 if (!(include_flags & CL_PARAMS))
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2153 exclude_flags |= CL_PARAMS;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2154
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2155 if (include_flags)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2156 print_specific_help (include_flags, exclude_flags, 0, opts,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2157 lang_mask);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2158 }
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2159
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2160 /* Handle target- and language-independent options. Return zero to
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2161 generate an "unknown option" message. Only options that need
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2162 extra handling need to be listed here; if you simply want
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2163 DECODED->value assigned to a variable, it happens automatically. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2164
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2165 bool
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2166 common_handle_option (struct gcc_options *opts,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2167 struct gcc_options *opts_set,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2168 const struct cl_decoded_option *decoded,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2169 unsigned int lang_mask, int kind ATTRIBUTE_UNUSED,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2170 location_t loc,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2171 const struct cl_option_handlers *handlers,
111
kono
parents: 67
diff changeset
2172 diagnostic_context *dc,
kono
parents: 67
diff changeset
2173 void (*target_option_override_hook) (void))
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2174 {
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2175 size_t scode = decoded->opt_index;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2176 const char *arg = decoded->arg;
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2177 HOST_WIDE_INT value = decoded->value;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2178 enum opt_code code = (enum opt_code) scode;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2179
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2180 gcc_assert (decoded->canonical_option_num_elements <= 2);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2181
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2182 switch (code)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2183 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2184 case OPT__help:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2185 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2186 unsigned int all_langs_mask = (1U << cl_lang_count) - 1;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2187 unsigned int undoc_mask;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2188 unsigned int i;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2189
111
kono
parents: 67
diff changeset
2190 if (lang_mask == CL_DRIVER)
kono
parents: 67
diff changeset
2191 break;
kono
parents: 67
diff changeset
2192
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2193 undoc_mask = ((opts->x_verbose_flag | opts->x_extra_warnings)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2194 ? 0
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2195 : CL_UNDOCUMENTED);
111
kono
parents: 67
diff changeset
2196 target_option_override_hook ();
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2197 /* First display any single language specific options. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2198 for (i = 0; i < cl_lang_count; i++)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2199 print_specific_help
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2200 (1U << i, (all_langs_mask & (~ (1U << i))) | undoc_mask, 0, opts,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2201 lang_mask);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2202 /* Next display any multi language specific options. */
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2203 print_specific_help (0, undoc_mask, all_langs_mask, opts, lang_mask);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2204 /* Then display any remaining, non-language options. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2205 for (i = CL_MIN_OPTION_CLASS; i <= CL_MAX_OPTION_CLASS; i <<= 1)
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2206 if (i != CL_DRIVER)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2207 print_specific_help (i, undoc_mask, 0, opts, lang_mask);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2208 opts->x_exit_after_options = true;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2209 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2210 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2211
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2212 case OPT__target_help:
111
kono
parents: 67
diff changeset
2213 if (lang_mask == CL_DRIVER)
kono
parents: 67
diff changeset
2214 break;
kono
parents: 67
diff changeset
2215
kono
parents: 67
diff changeset
2216 target_option_override_hook ();
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2217 print_specific_help (CL_TARGET, CL_UNDOCUMENTED, 0, opts, lang_mask);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2218 opts->x_exit_after_options = true;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2219 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2220
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2221 case OPT__help_:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2222 {
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2223 help_option_arguments.safe_push (arg);
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2224 opts->x_exit_after_options = true;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2225 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2226 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2227
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2228 case OPT__version:
111
kono
parents: 67
diff changeset
2229 if (lang_mask == CL_DRIVER)
kono
parents: 67
diff changeset
2230 break;
kono
parents: 67
diff changeset
2231
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2232 opts->x_exit_after_options = true;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2233 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2234
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2235 case OPT__completion_:
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2236 break;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2237
111
kono
parents: 67
diff changeset
2238 case OPT_fsanitize_:
kono
parents: 67
diff changeset
2239 opts->x_flag_sanitize
kono
parents: 67
diff changeset
2240 = parse_sanitizer_options (arg, loc, code,
kono
parents: 67
diff changeset
2241 opts->x_flag_sanitize, value, true);
kono
parents: 67
diff changeset
2242
kono
parents: 67
diff changeset
2243 /* Kernel ASan implies normal ASan but does not yet support
kono
parents: 67
diff changeset
2244 all features. */
kono
parents: 67
diff changeset
2245 if (opts->x_flag_sanitize & SANITIZE_KERNEL_ADDRESS)
kono
parents: 67
diff changeset
2246 {
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2247 SET_OPTION_IF_UNSET (opts, opts_set,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2248 param_asan_instrumentation_with_call_threshold,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2249 0);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2250 SET_OPTION_IF_UNSET (opts, opts_set, param_asan_globals, 0);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2251 SET_OPTION_IF_UNSET (opts, opts_set, param_asan_stack, 0);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2252 SET_OPTION_IF_UNSET (opts, opts_set, param_asan_protect_allocas, 0);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2253 SET_OPTION_IF_UNSET (opts, opts_set, param_asan_use_after_return, 0);
111
kono
parents: 67
diff changeset
2254 }
kono
parents: 67
diff changeset
2255 break;
kono
parents: 67
diff changeset
2256
kono
parents: 67
diff changeset
2257 case OPT_fsanitize_recover_:
kono
parents: 67
diff changeset
2258 opts->x_flag_sanitize_recover
kono
parents: 67
diff changeset
2259 = parse_sanitizer_options (arg, loc, code,
kono
parents: 67
diff changeset
2260 opts->x_flag_sanitize_recover, value, true);
kono
parents: 67
diff changeset
2261 break;
kono
parents: 67
diff changeset
2262
kono
parents: 67
diff changeset
2263 case OPT_fasan_shadow_offset_:
kono
parents: 67
diff changeset
2264 /* Deferred. */
kono
parents: 67
diff changeset
2265 break;
kono
parents: 67
diff changeset
2266
kono
parents: 67
diff changeset
2267 case OPT_fsanitize_address_use_after_scope:
kono
parents: 67
diff changeset
2268 opts->x_flag_sanitize_address_use_after_scope = value;
kono
parents: 67
diff changeset
2269 break;
kono
parents: 67
diff changeset
2270
kono
parents: 67
diff changeset
2271 case OPT_fsanitize_recover:
kono
parents: 67
diff changeset
2272 if (value)
kono
parents: 67
diff changeset
2273 opts->x_flag_sanitize_recover
kono
parents: 67
diff changeset
2274 |= (SANITIZE_UNDEFINED | SANITIZE_UNDEFINED_NONDEFAULT)
kono
parents: 67
diff changeset
2275 & ~(SANITIZE_UNREACHABLE | SANITIZE_RETURN);
kono
parents: 67
diff changeset
2276 else
kono
parents: 67
diff changeset
2277 opts->x_flag_sanitize_recover
kono
parents: 67
diff changeset
2278 &= ~(SANITIZE_UNDEFINED | SANITIZE_UNDEFINED_NONDEFAULT);
kono
parents: 67
diff changeset
2279 break;
kono
parents: 67
diff changeset
2280
kono
parents: 67
diff changeset
2281 case OPT_fsanitize_coverage_:
kono
parents: 67
diff changeset
2282 opts->x_flag_sanitize_coverage
kono
parents: 67
diff changeset
2283 = parse_sanitizer_options (arg, loc, code,
kono
parents: 67
diff changeset
2284 opts->x_flag_sanitize_coverage, value, true);
kono
parents: 67
diff changeset
2285 break;
kono
parents: 67
diff changeset
2286
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2287 case OPT_O:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2288 case OPT_Os:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2289 case OPT_Ofast:
111
kono
parents: 67
diff changeset
2290 case OPT_Og:
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2291 /* Currently handled in a prescan. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2292 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2293
111
kono
parents: 67
diff changeset
2294 case OPT_Werror:
kono
parents: 67
diff changeset
2295 dc->warning_as_error_requested = value;
kono
parents: 67
diff changeset
2296 break;
kono
parents: 67
diff changeset
2297
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2298 case OPT_Werror_:
111
kono
parents: 67
diff changeset
2299 if (lang_mask == CL_DRIVER)
kono
parents: 67
diff changeset
2300 break;
kono
parents: 67
diff changeset
2301
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2302 enable_warning_as_error (arg, value, lang_mask, handlers,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2303 opts, opts_set, loc, dc);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2304 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2305
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2306 case OPT_Wfatal_errors:
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2307 dc->fatal_errors = value;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2308 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2309
111
kono
parents: 67
diff changeset
2310 case OPT_Wstack_usage_:
kono
parents: 67
diff changeset
2311 opts->x_flag_stack_usage_info = value != -1;
kono
parents: 67
diff changeset
2312 break;
kono
parents: 67
diff changeset
2313
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2314 case OPT_Wstrict_aliasing:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2315 set_Wstrict_aliasing (opts, value);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2316 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2317
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2318 case OPT_Wstrict_overflow:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2319 opts->x_warn_strict_overflow = (value
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2320 ? (int) WARN_STRICT_OVERFLOW_CONDITIONAL
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2321 : 0);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2322 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2323
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2324 case OPT_Wsystem_headers:
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2325 dc->dc_warn_system_headers = value;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2326 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2327
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2328 case OPT_aux_info:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2329 opts->x_flag_gen_aux_info = 1;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2330 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2331
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2332 case OPT_auxbase_strip:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2333 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2334 char *tmp = xstrdup (arg);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2335 strip_off_ending (tmp, strlen (tmp));
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2336 if (tmp[0])
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2337 opts->x_aux_base_name = tmp;
111
kono
parents: 67
diff changeset
2338 else
kono
parents: 67
diff changeset
2339 free (tmp);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2340 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2341 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2342
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2343 case OPT_d:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2344 decode_d_option (arg, opts, loc, dc);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2345 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2346
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2347 case OPT_fcall_used_:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2348 case OPT_fcall_saved_:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2349 /* Deferred. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2350 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2351
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2352 case OPT_fdbg_cnt_:
111
kono
parents: 67
diff changeset
2353 /* Deferred. */
kono
parents: 67
diff changeset
2354 break;
kono
parents: 67
diff changeset
2355
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2356 case OPT_fdbg_cnt_list:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2357 /* Deferred. */
111
kono
parents: 67
diff changeset
2358 opts->x_exit_after_options = true;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2359 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2360
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2361 case OPT_fdebug_prefix_map_:
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2362 case OPT_ffile_prefix_map_:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2363 /* Deferred. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2364 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2365
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2366 case OPT_fcallgraph_info:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2367 opts->x_flag_callgraph_info = CALLGRAPH_INFO_NAKED;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2368 break;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2369
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2370 case OPT_fcallgraph_info_:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2371 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2372 char *my_arg, *p;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2373 my_arg = xstrdup (arg);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2374 p = strtok (my_arg, ",");
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2375 while (p)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2376 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2377 if (strcmp (p, "su") == 0)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2378 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2379 opts->x_flag_callgraph_info |= CALLGRAPH_INFO_STACK_USAGE;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2380 opts->x_flag_stack_usage_info = true;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2381 }
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2382 else if (strcmp (p, "da") == 0)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2383 opts->x_flag_callgraph_info |= CALLGRAPH_INFO_DYNAMIC_ALLOC;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2384 else
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2385 return 0;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2386 p = strtok (NULL, ",");
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2387 }
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2388 free (my_arg);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2389 }
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2390 break;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2391
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2392 case OPT_fdiagnostics_show_location_:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2393 diagnostic_prefixing_rule (dc) = (diagnostic_prefixing_rule_t) value;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2394 break;
111
kono
parents: 67
diff changeset
2395
kono
parents: 67
diff changeset
2396 case OPT_fdiagnostics_show_caret:
kono
parents: 67
diff changeset
2397 dc->show_caret = value;
kono
parents: 67
diff changeset
2398 break;
kono
parents: 67
diff changeset
2399
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2400 case OPT_fdiagnostics_show_labels:
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2401 dc->show_labels_p = value;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2402 break;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2403
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2404 case OPT_fdiagnostics_show_line_numbers:
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2405 dc->show_line_numbers_p = value;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2406 break;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2407
111
kono
parents: 67
diff changeset
2408 case OPT_fdiagnostics_color_:
kono
parents: 67
diff changeset
2409 diagnostic_color_init (dc, value);
kono
parents: 67
diff changeset
2410 break;
kono
parents: 67
diff changeset
2411
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2412 case OPT_fdiagnostics_urls_:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2413 diagnostic_urls_init (dc, value);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2414 break;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2415
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2416 case OPT_fdiagnostics_format_:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2417 diagnostic_output_format_init (dc,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2418 (enum diagnostics_output_format)value);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2419 break;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2420
111
kono
parents: 67
diff changeset
2421 case OPT_fdiagnostics_parseable_fixits:
kono
parents: 67
diff changeset
2422 dc->parseable_fixits_p = value;
kono
parents: 67
diff changeset
2423 break;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2424
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2425 case OPT_fdiagnostics_show_cwe:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2426 dc->show_cwe = value;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2427 break;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2428
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2429 case OPT_fdiagnostics_path_format_:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2430 dc->path_format = (enum diagnostic_path_format)value;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2431 break;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2432
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2433 case OPT_fdiagnostics_show_path_depths:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2434 dc->show_path_depths = value;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2435 break;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2436
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2437 case OPT_fdiagnostics_show_option:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2438 dc->show_option_requested = value;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2439 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2440
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2441 case OPT_fdiagnostics_minimum_margin_width_:
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2442 dc->min_margin_width = value;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2443 break;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2444
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2445 case OPT_fdump_:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2446 /* Deferred. */
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
2447 break;
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
2448
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2449 case OPT_ffast_math:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2450 set_fast_math_flags (opts, value);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2451 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2452
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2453 case OPT_funsafe_math_optimizations:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2454 set_unsafe_math_optimizations_flags (opts, value);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2455 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2456
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2457 case OPT_ffixed_:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2458 /* Deferred. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2459 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2460
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2461 case OPT_finline_limit_:
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2462 SET_OPTION_IF_UNSET (opts, opts_set, param_max_inline_insns_single,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2463 value / 2);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2464 SET_OPTION_IF_UNSET (opts, opts_set, param_max_inline_insns_auto,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2465 value / 2);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2466 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2467
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2468 case OPT_finstrument_functions_exclude_function_list_:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2469 add_comma_separated_to_vector
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2470 (&opts->x_flag_instrument_functions_exclude_functions, arg);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2471 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2472
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2473 case OPT_finstrument_functions_exclude_file_list_:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2474 add_comma_separated_to_vector
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2475 (&opts->x_flag_instrument_functions_exclude_files, arg);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2476 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2477
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2478 case OPT_fmessage_length_:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2479 pp_set_line_maximum_length (dc->printer, value);
111
kono
parents: 67
diff changeset
2480 diagnostic_set_caret_max_width (dc, value);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2481 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2482
111
kono
parents: 67
diff changeset
2483 case OPT_fopt_info:
kono
parents: 67
diff changeset
2484 case OPT_fopt_info_:
kono
parents: 67
diff changeset
2485 /* Deferred. */
kono
parents: 67
diff changeset
2486 break;
kono
parents: 67
diff changeset
2487
kono
parents: 67
diff changeset
2488 case OPT_foffload_:
kono
parents: 67
diff changeset
2489 {
kono
parents: 67
diff changeset
2490 const char *p = arg;
kono
parents: 67
diff changeset
2491 opts->x_flag_disable_hsa = true;
kono
parents: 67
diff changeset
2492 while (*p != 0)
kono
parents: 67
diff changeset
2493 {
kono
parents: 67
diff changeset
2494 const char *comma = strchr (p, ',');
kono
parents: 67
diff changeset
2495
kono
parents: 67
diff changeset
2496 if ((strncmp (p, "disable", 7) == 0)
kono
parents: 67
diff changeset
2497 && (p[7] == ',' || p[7] == '\0'))
kono
parents: 67
diff changeset
2498 {
kono
parents: 67
diff changeset
2499 opts->x_flag_disable_hsa = true;
kono
parents: 67
diff changeset
2500 break;
kono
parents: 67
diff changeset
2501 }
kono
parents: 67
diff changeset
2502
kono
parents: 67
diff changeset
2503 if ((strncmp (p, "hsa", 3) == 0)
kono
parents: 67
diff changeset
2504 && (p[3] == ',' || p[3] == '\0'))
kono
parents: 67
diff changeset
2505 {
kono
parents: 67
diff changeset
2506 #ifdef ENABLE_HSA
kono
parents: 67
diff changeset
2507 opts->x_flag_disable_hsa = false;
kono
parents: 67
diff changeset
2508 #else
kono
parents: 67
diff changeset
2509 sorry ("HSA has not been enabled during configuration");
kono
parents: 67
diff changeset
2510 #endif
kono
parents: 67
diff changeset
2511 }
kono
parents: 67
diff changeset
2512 if (!comma)
kono
parents: 67
diff changeset
2513 break;
kono
parents: 67
diff changeset
2514 p = comma + 1;
kono
parents: 67
diff changeset
2515 }
kono
parents: 67
diff changeset
2516 break;
kono
parents: 67
diff changeset
2517 }
kono
parents: 67
diff changeset
2518
kono
parents: 67
diff changeset
2519 #ifndef ACCEL_COMPILER
kono
parents: 67
diff changeset
2520 case OPT_foffload_abi_:
kono
parents: 67
diff changeset
2521 error_at (loc, "%<-foffload-abi%> option can be specified only for "
kono
parents: 67
diff changeset
2522 "offload compiler");
kono
parents: 67
diff changeset
2523 break;
kono
parents: 67
diff changeset
2524 #endif
kono
parents: 67
diff changeset
2525
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2526 case OPT_fpack_struct_:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2527 if (value <= 0 || (value & (value - 1)) || value > 16)
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2528 error_at (loc,
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2529 "structure alignment must be a small power of two, not %wu",
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2530 value);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2531 else
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2532 opts->x_initial_max_fld_align = value;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2533 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2534
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
2535 case OPT_fplugin_:
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
2536 case OPT_fplugin_arg_:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2537 /* Deferred. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2538 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2539
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2540 case OPT_fprofile_use_:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2541 opts->x_profile_data_prefix = xstrdup (arg);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2542 opts->x_flag_profile_use = true;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2543 value = true;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2544 /* No break here - do -fprofile-use processing. */
111
kono
parents: 67
diff changeset
2545 /* FALLTHRU */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2546 case OPT_fprofile_use:
111
kono
parents: 67
diff changeset
2547 enable_fdo_optimizations (opts, opts_set, value);
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2548 SET_OPTION_IF_UNSET (opts, opts_set, flag_profile_reorder_functions,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2549 value);
111
kono
parents: 67
diff changeset
2550 /* Indirect call profiling should do all useful transformations
kono
parents: 67
diff changeset
2551 speculative devirtualization does. */
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2552 if (opts->x_flag_value_profile_transformations)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2553 SET_OPTION_IF_UNSET (opts, opts_set, flag_devirtualize_speculatively,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2554 false);
111
kono
parents: 67
diff changeset
2555 break;
kono
parents: 67
diff changeset
2556
kono
parents: 67
diff changeset
2557 case OPT_fauto_profile_:
kono
parents: 67
diff changeset
2558 opts->x_auto_profile_file = xstrdup (arg);
kono
parents: 67
diff changeset
2559 opts->x_flag_auto_profile = true;
kono
parents: 67
diff changeset
2560 value = true;
kono
parents: 67
diff changeset
2561 /* No break here - do -fauto-profile processing. */
kono
parents: 67
diff changeset
2562 /* FALLTHRU */
kono
parents: 67
diff changeset
2563 case OPT_fauto_profile:
kono
parents: 67
diff changeset
2564 enable_fdo_optimizations (opts, opts_set, value);
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2565 SET_OPTION_IF_UNSET (opts, opts_set, flag_profile_correction, value);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2566 SET_OPTION_IF_UNSET (opts, opts_set,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2567 param_early_inliner_max_iterations, 10);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2568 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2569
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2570 case OPT_fprofile_generate_:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2571 opts->x_profile_data_prefix = xstrdup (arg);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2572 value = true;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2573 /* No break here - do -fprofile-generate processing. */
111
kono
parents: 67
diff changeset
2574 /* FALLTHRU */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2575 case OPT_fprofile_generate:
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2576 SET_OPTION_IF_UNSET (opts, opts_set, profile_arc_flag, value);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2577 SET_OPTION_IF_UNSET (opts, opts_set, flag_profile_values, value);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2578 SET_OPTION_IF_UNSET (opts, opts_set, flag_inline_functions, value);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2579 SET_OPTION_IF_UNSET (opts, opts_set, flag_ipa_bit_cp, value);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2580 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2581
111
kono
parents: 67
diff changeset
2582 case OPT_fpatchable_function_entry_:
kono
parents: 67
diff changeset
2583 {
kono
parents: 67
diff changeset
2584 char *patch_area_arg = xstrdup (arg);
kono
parents: 67
diff changeset
2585 char *comma = strchr (patch_area_arg, ',');
kono
parents: 67
diff changeset
2586 if (comma)
kono
parents: 67
diff changeset
2587 {
kono
parents: 67
diff changeset
2588 *comma = '\0';
kono
parents: 67
diff changeset
2589 function_entry_patch_area_size =
kono
parents: 67
diff changeset
2590 integral_argument (patch_area_arg);
kono
parents: 67
diff changeset
2591 function_entry_patch_area_start =
kono
parents: 67
diff changeset
2592 integral_argument (comma + 1);
kono
parents: 67
diff changeset
2593 }
kono
parents: 67
diff changeset
2594 else
kono
parents: 67
diff changeset
2595 {
kono
parents: 67
diff changeset
2596 function_entry_patch_area_size =
kono
parents: 67
diff changeset
2597 integral_argument (patch_area_arg);
kono
parents: 67
diff changeset
2598 function_entry_patch_area_start = 0;
kono
parents: 67
diff changeset
2599 }
kono
parents: 67
diff changeset
2600 if (function_entry_patch_area_size < 0
kono
parents: 67
diff changeset
2601 || function_entry_patch_area_start < 0
kono
parents: 67
diff changeset
2602 || function_entry_patch_area_size
kono
parents: 67
diff changeset
2603 < function_entry_patch_area_start)
kono
parents: 67
diff changeset
2604 error ("invalid arguments for %<-fpatchable_function_entry%>");
kono
parents: 67
diff changeset
2605 free (patch_area_arg);
kono
parents: 67
diff changeset
2606 }
kono
parents: 67
diff changeset
2607 break;
kono
parents: 67
diff changeset
2608
kono
parents: 67
diff changeset
2609 case OPT_ftree_vectorize:
kono
parents: 67
diff changeset
2610 /* Automatically sets -ftree-loop-vectorize and
kono
parents: 67
diff changeset
2611 -ftree-slp-vectorize. Nothing more to do here. */
kono
parents: 67
diff changeset
2612 break;
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2613 case OPT_fshow_column:
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2614 dc->show_column = value;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2615 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2616
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2617 case OPT_frandom_seed:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2618 /* The real switch is -fno-random-seed. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2619 if (value)
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2620 return false;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2621 /* Deferred. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2622 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2623
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2624 case OPT_frandom_seed_:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2625 /* Deferred. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2626 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2627
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2628 case OPT_fsched_verbose_:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2629 #ifdef INSN_SCHEDULING
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2630 /* Handled with Var in common.opt. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2631 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2632 #else
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2633 return false;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2634 #endif
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2635
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2636 case OPT_fsched_stalled_insns_:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2637 opts->x_flag_sched_stalled_insns = value;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2638 if (opts->x_flag_sched_stalled_insns == 0)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2639 opts->x_flag_sched_stalled_insns = -1;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2640 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2641
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2642 case OPT_fsched_stalled_insns_dep_:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2643 opts->x_flag_sched_stalled_insns_dep = value;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2644 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2645
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2646 case OPT_fstack_check_:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2647 if (!strcmp (arg, "no"))
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2648 opts->x_flag_stack_check = NO_STACK_CHECK;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2649 else if (!strcmp (arg, "generic"))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2650 /* This is the old stack checking method. */
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2651 opts->x_flag_stack_check = STACK_CHECK_BUILTIN
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2652 ? FULL_BUILTIN_STACK_CHECK
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2653 : GENERIC_STACK_CHECK;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2654 else if (!strcmp (arg, "specific"))
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2655 /* This is the new stack checking method. */
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2656 opts->x_flag_stack_check = STACK_CHECK_BUILTIN
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2657 ? FULL_BUILTIN_STACK_CHECK
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2658 : STACK_CHECK_STATIC_BUILTIN
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2659 ? STATIC_BUILTIN_STACK_CHECK
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2660 : GENERIC_STACK_CHECK;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2661 else
111
kono
parents: 67
diff changeset
2662 warning_at (loc, 0, "unknown stack check parameter %qs", arg);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2663 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2664
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2665 case OPT_fstack_limit:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2666 /* The real switch is -fno-stack-limit. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2667 if (value)
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2668 return false;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2669 /* Deferred. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2670 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2671
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2672 case OPT_fstack_limit_register_:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2673 case OPT_fstack_limit_symbol_:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2674 /* Deferred. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2675 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2676
111
kono
parents: 67
diff changeset
2677 case OPT_fstack_usage:
kono
parents: 67
diff changeset
2678 opts->x_flag_stack_usage = value;
kono
parents: 67
diff changeset
2679 opts->x_flag_stack_usage_info = value != 0;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2680 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2681
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2682 case OPT_g:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2683 set_debug_level (NO_DEBUG, DEFAULT_GDB_EXTENSIONS, arg, opts, opts_set,
111
kono
parents: 67
diff changeset
2684 loc);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2685 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2686
111
kono
parents: 67
diff changeset
2687 case OPT_gdwarf:
kono
parents: 67
diff changeset
2688 if (arg && strlen (arg) != 0)
kono
parents: 67
diff changeset
2689 {
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2690 error_at (loc, "%<-gdwarf%s%> is ambiguous; "
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2691 "use %<-gdwarf-%s%> for DWARF version "
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2692 "or %<-gdwarf%> %<-g%s%> for debug level", arg, arg, arg);
111
kono
parents: 67
diff changeset
2693 break;
kono
parents: 67
diff changeset
2694 }
kono
parents: 67
diff changeset
2695 else
kono
parents: 67
diff changeset
2696 value = opts->x_dwarf_version;
kono
parents: 67
diff changeset
2697
kono
parents: 67
diff changeset
2698 /* FALLTHRU */
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
2699 case OPT_gdwarf_:
111
kono
parents: 67
diff changeset
2700 if (value < 2 || value > 5)
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2701 error_at (loc, "dwarf version %wu is not supported", value);
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
2702 else
111
kono
parents: 67
diff changeset
2703 opts->x_dwarf_version = value;
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2704 set_debug_level (DWARF2_DEBUG, false, "", opts, opts_set, loc);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2705 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2706
111
kono
parents: 67
diff changeset
2707 case OPT_gsplit_dwarf:
kono
parents: 67
diff changeset
2708 set_debug_level (NO_DEBUG, DEFAULT_GDB_EXTENSIONS, "", opts, opts_set,
kono
parents: 67
diff changeset
2709 loc);
kono
parents: 67
diff changeset
2710 break;
kono
parents: 67
diff changeset
2711
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2712 case OPT_ggdb:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2713 set_debug_level (NO_DEBUG, 2, arg, opts, opts_set, loc);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2714 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2715
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2716 case OPT_gstabs:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2717 case OPT_gstabs_:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2718 set_debug_level (DBX_DEBUG, code == OPT_gstabs_, arg, opts, opts_set,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2719 loc);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2720 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2721
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2722 case OPT_gvms:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2723 set_debug_level (VMS_DEBUG, false, arg, opts, opts_set, loc);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2724 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2725
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2726 case OPT_gxcoff:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2727 case OPT_gxcoff_:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2728 set_debug_level (XCOFF_DEBUG, code == OPT_gxcoff_, arg, opts, opts_set,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2729 loc);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2730 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2731
111
kono
parents: 67
diff changeset
2732 case OPT_gz:
kono
parents: 67
diff changeset
2733 case OPT_gz_:
kono
parents: 67
diff changeset
2734 /* Handled completely via specs. */
kono
parents: 67
diff changeset
2735 break;
kono
parents: 67
diff changeset
2736
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2737 case OPT_pedantic_errors:
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2738 dc->pedantic_errors = 1;
111
kono
parents: 67
diff changeset
2739 control_warning_option (OPT_Wpedantic, DK_ERROR, NULL, value,
kono
parents: 67
diff changeset
2740 loc, lang_mask,
kono
parents: 67
diff changeset
2741 handlers, opts, opts_set,
kono
parents: 67
diff changeset
2742 dc);
63
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
2743 break;
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
2744
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2745 case OPT_flto:
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2746 opts->x_flag_lto = value ? "" : NULL;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2747 break;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2748
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2749 case OPT_flto_:
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2750 if (strcmp (arg, "none") != 0
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2751 && strcmp (arg, "jobserver") != 0
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2752 && strcmp (arg, "auto") != 0
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2753 && atoi (arg) == 0)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2754 error_at (loc,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2755 "unrecognized argument to %<-flto=%> option: %qs", arg);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2756 break;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2757
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2758 case OPT_w:
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2759 dc->dc_inhibit_warnings = true;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2760 break;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2761
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2762 case OPT_fmax_errors_:
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2763 dc->max_errors = value;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2764 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2765
111
kono
parents: 67
diff changeset
2766 case OPT_fuse_ld_bfd:
kono
parents: 67
diff changeset
2767 case OPT_fuse_ld_gold:
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2768 case OPT_fuse_ld_lld:
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
2769 case OPT_fuse_linker_plugin:
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
2770 /* No-op. Used by the driver and passed to us because it starts with f.*/
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
2771 break;
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
2772
111
kono
parents: 67
diff changeset
2773 case OPT_fwrapv:
kono
parents: 67
diff changeset
2774 if (value)
kono
parents: 67
diff changeset
2775 opts->x_flag_trapv = 0;
kono
parents: 67
diff changeset
2776 break;
kono
parents: 67
diff changeset
2777
kono
parents: 67
diff changeset
2778 case OPT_ftrapv:
kono
parents: 67
diff changeset
2779 if (value)
kono
parents: 67
diff changeset
2780 opts->x_flag_wrapv = 0;
kono
parents: 67
diff changeset
2781 break;
kono
parents: 67
diff changeset
2782
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2783 case OPT_fstrict_overflow:
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2784 opts->x_flag_wrapv = !value;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2785 opts->x_flag_wrapv_pointer = !value;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2786 if (!value)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2787 opts->x_flag_trapv = 0;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2788 break;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2789
111
kono
parents: 67
diff changeset
2790 case OPT_fipa_icf:
kono
parents: 67
diff changeset
2791 opts->x_flag_ipa_icf_functions = value;
kono
parents: 67
diff changeset
2792 opts->x_flag_ipa_icf_variables = value;
kono
parents: 67
diff changeset
2793 break;
kono
parents: 67
diff changeset
2794
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2795 case OPT_falign_loops_:
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2796 check_alignment_argument (loc, arg, "loops");
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2797 break;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2798
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2799 case OPT_falign_jumps_:
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2800 check_alignment_argument (loc, arg, "jumps");
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2801 break;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2802
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2803 case OPT_falign_labels_:
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2804 check_alignment_argument (loc, arg, "labels");
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2805 break;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2806
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2807 case OPT_falign_functions_:
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2808 check_alignment_argument (loc, arg, "functions");
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2809 break;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2810
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2811 default:
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2812 /* If the flag was handled in a standard way, assume the lack of
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2813 processing here is intentional. */
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2814 gcc_assert (option_flag_var (scode, opts));
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2815 break;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2816 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2817
111
kono
parents: 67
diff changeset
2818 common_handle_option_auto (opts, opts_set, decoded, lang_mask, kind,
kono
parents: 67
diff changeset
2819 loc, handlers, dc);
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2820 return true;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2821 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2822
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2823 /* Used to set the level of strict aliasing warnings in OPTS,
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2824 when no level is specified (i.e., when -Wstrict-aliasing, and not
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2825 -Wstrict-aliasing=level was given).
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2826 ONOFF is assumed to take value 1 when -Wstrict-aliasing is specified,
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2827 and 0 otherwise. After calling this function, wstrict_aliasing will be
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2828 set to the default value of -Wstrict_aliasing=level, currently 3. */
111
kono
parents: 67
diff changeset
2829 static void
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2830 set_Wstrict_aliasing (struct gcc_options *opts, int onoff)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2831 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2832 gcc_assert (onoff == 0 || onoff == 1);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2833 if (onoff != 0)
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2834 opts->x_warn_strict_aliasing = 3;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2835 else
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2836 opts->x_warn_strict_aliasing = 0;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2837 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2838
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2839 /* The following routines are useful in setting all the flags that
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2840 -ffast-math and -fno-fast-math imply. */
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2841 static void
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2842 set_fast_math_flags (struct gcc_options *opts, int set)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2843 {
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2844 if (!opts->frontend_set_flag_unsafe_math_optimizations)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2845 {
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2846 opts->x_flag_unsafe_math_optimizations = set;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2847 set_unsafe_math_optimizations_flags (opts, set);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2848 }
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2849 if (!opts->frontend_set_flag_finite_math_only)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2850 opts->x_flag_finite_math_only = set;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2851 if (!opts->frontend_set_flag_errno_math)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2852 opts->x_flag_errno_math = !set;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2853 if (set)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2854 {
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2855 if (opts->frontend_set_flag_excess_precision == EXCESS_PRECISION_DEFAULT)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2856 opts->x_flag_excess_precision
111
kono
parents: 67
diff changeset
2857 = set ? EXCESS_PRECISION_FAST : EXCESS_PRECISION_DEFAULT;
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2858 if (!opts->frontend_set_flag_signaling_nans)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2859 opts->x_flag_signaling_nans = 0;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2860 if (!opts->frontend_set_flag_rounding_math)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2861 opts->x_flag_rounding_math = 0;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2862 if (!opts->frontend_set_flag_cx_limited_range)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2863 opts->x_flag_cx_limited_range = 1;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2864 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2865 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2866
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
2867 /* When -funsafe-math-optimizations is set the following
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
2868 flags are set as well. */
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2869 static void
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2870 set_unsafe_math_optimizations_flags (struct gcc_options *opts, int set)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2871 {
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2872 if (!opts->frontend_set_flag_trapping_math)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2873 opts->x_flag_trapping_math = !set;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2874 if (!opts->frontend_set_flag_signed_zeros)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2875 opts->x_flag_signed_zeros = !set;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2876 if (!opts->frontend_set_flag_associative_math)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2877 opts->x_flag_associative_math = set;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2878 if (!opts->frontend_set_flag_reciprocal_math)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2879 opts->x_flag_reciprocal_math = set;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2880 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2881
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2882 /* Return true iff flags in OPTS are set as if -ffast-math. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2883 bool
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2884 fast_math_flags_set_p (const struct gcc_options *opts)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2885 {
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2886 return (!opts->x_flag_trapping_math
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2887 && opts->x_flag_unsafe_math_optimizations
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2888 && opts->x_flag_finite_math_only
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2889 && !opts->x_flag_signed_zeros
111
kono
parents: 67
diff changeset
2890 && !opts->x_flag_errno_math
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2891 && opts->x_flag_excess_precision == EXCESS_PRECISION_FAST);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2892 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2893
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2894 /* Return true iff flags are set as if -ffast-math but using the flags stored
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2895 in the struct cl_optimization structure. */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2896 bool
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2897 fast_math_flags_struct_set_p (struct cl_optimization *opt)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2898 {
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2899 return (!opt->x_flag_trapping_math
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2900 && opt->x_flag_unsafe_math_optimizations
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2901 && opt->x_flag_finite_math_only
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2902 && !opt->x_flag_signed_zeros
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2903 && !opt->x_flag_errno_math);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2904 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2905
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2906 /* Handle a debug output -g switch for options OPTS
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2907 (OPTS_SET->x_write_symbols storing whether a debug type was passed
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2908 explicitly), location LOC. EXTENDED is true or false to support
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2909 extended output (2 is special and means "-ggdb" was given). */
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2910 static void
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2911 set_debug_level (enum debug_info_type type, int extended, const char *arg,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2912 struct gcc_options *opts, struct gcc_options *opts_set,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2913 location_t loc)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2914 {
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2915 opts->x_use_gnu_debug_info_extensions = extended;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2916
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2917 if (type == NO_DEBUG)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2918 {
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2919 if (opts->x_write_symbols == NO_DEBUG)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2920 {
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2921 opts->x_write_symbols = PREFERRED_DEBUGGING_TYPE;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2922
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2923 if (extended == 2)
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2924 {
111
kono
parents: 67
diff changeset
2925 #if defined DWARF2_DEBUGGING_INFO || defined DWARF2_LINENO_DEBUGGING_INFO
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2926 opts->x_write_symbols = DWARF2_DEBUG;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2927 #elif defined DBX_DEBUGGING_INFO
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2928 opts->x_write_symbols = DBX_DEBUG;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2929 #endif
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2930 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2931
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2932 if (opts->x_write_symbols == NO_DEBUG)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2933 warning_at (loc, 0, "target system does not support debug output");
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2934 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2935 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2936 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2937 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2938 /* Does it conflict with an already selected type? */
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2939 if (opts_set->x_write_symbols != NO_DEBUG
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2940 && opts->x_write_symbols != NO_DEBUG
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2941 && type != opts->x_write_symbols)
111
kono
parents: 67
diff changeset
2942 error_at (loc, "debug format %qs conflicts with prior selection",
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2943 debug_type_names[type]);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2944 opts->x_write_symbols = type;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2945 opts_set->x_write_symbols = type;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2946 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2947
111
kono
parents: 67
diff changeset
2948 /* A debug flag without a level defaults to level 2.
kono
parents: 67
diff changeset
2949 If off or at level 1, set it to level 2, but if already
kono
parents: 67
diff changeset
2950 at level 3, don't lower it. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2951 if (*arg == '\0')
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2952 {
111
kono
parents: 67
diff changeset
2953 if (opts->x_debug_info_level < DINFO_LEVEL_NORMAL)
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2954 opts->x_debug_info_level = DINFO_LEVEL_NORMAL;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2955 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2956 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2957 {
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
2958 int argval = integral_argument (arg);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
2959 if (argval == -1)
111
kono
parents: 67
diff changeset
2960 error_at (loc, "unrecognized debug output level %qs", arg);
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
2961 else if (argval > 3)
111
kono
parents: 67
diff changeset
2962 error_at (loc, "debug output level %qs is too high", arg);
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
2963 else
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2964 opts->x_debug_info_level = (enum debug_info_levels) argval;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2965 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2966 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2967
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2968 /* Arrange to dump core on error for diagnostic context DC. (The
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2969 regular error message is still printed first, except in the case of
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2970 abort ().) */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2971
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2972 static void
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2973 setup_core_dumping (diagnostic_context *dc)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2974 {
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2975 #ifdef SIGABRT
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2976 signal (SIGABRT, SIG_DFL);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2977 #endif
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2978 #if defined(HAVE_SETRLIMIT)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2979 {
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2980 struct rlimit rlim;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2981 if (getrlimit (RLIMIT_CORE, &rlim) != 0)
111
kono
parents: 67
diff changeset
2982 fatal_error (input_location, "getting core file size maximum limit: %m");
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2983 rlim.rlim_cur = rlim.rlim_max;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2984 if (setrlimit (RLIMIT_CORE, &rlim) != 0)
111
kono
parents: 67
diff changeset
2985 fatal_error (input_location,
kono
parents: 67
diff changeset
2986 "setting core file size limit to maximum: %m");
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2987 }
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2988 #endif
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2989 diagnostic_abort_on_error (dc);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2990 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2991
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2992 /* Parse a -d<ARG> command line switch for OPTS, location LOC,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2993 diagnostic context DC. */
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2994
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2995 static void
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2996 decode_d_option (const char *arg, struct gcc_options *opts,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2997 location_t loc, diagnostic_context *dc)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2998 {
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
2999 int c;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3000
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3001 while (*arg)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3002 switch (c = *arg++)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3003 {
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3004 case 'A':
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3005 opts->x_flag_debug_asm = 1;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3006 break;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3007 case 'p':
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3008 opts->x_flag_print_asm_name = 1;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3009 break;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3010 case 'P':
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3011 opts->x_flag_dump_rtl_in_asm = 1;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3012 opts->x_flag_print_asm_name = 1;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3013 break;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3014 case 'x':
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3015 opts->x_rtl_dump_and_exit = 1;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3016 break;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3017 case 'D': /* These are handled by the preprocessor. */
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3018 case 'I':
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3019 case 'M':
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3020 case 'N':
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3021 case 'U':
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3022 break;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3023 case 'H':
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3024 setup_core_dumping (dc);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3025 break;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3026 case 'a':
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3027 opts->x_flag_dump_all_passed = true;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3028 break;
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3029
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3030 default:
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3031 warning_at (loc, 0, "unrecognized gcc debugging option: %c", c);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3032 break;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3033 }
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3034 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3035
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3036 /* Enable (or disable if VALUE is 0) a warning option ARG (language
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3037 mask LANG_MASK, option handlers HANDLERS) as an error for option
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3038 structures OPTS and OPTS_SET, diagnostic context DC (possibly
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3039 NULL), location LOC. This is used by -Werror=. */
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
3040
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3041 static void
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3042 enable_warning_as_error (const char *arg, int value, unsigned int lang_mask,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3043 const struct cl_option_handlers *handlers,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3044 struct gcc_options *opts,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3045 struct gcc_options *opts_set,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3046 location_t loc, diagnostic_context *dc)
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3047 {
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3048 char *new_option;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3049 int option_index;
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3050
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3051 new_option = XNEWVEC (char, strlen (arg) + 2);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3052 new_option[0] = 'W';
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3053 strcpy (new_option + 1, arg);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3054 option_index = find_opt (new_option, lang_mask);
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3055 if (option_index == OPT_SPECIAL_unknown)
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3056 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3057 option_proposer op;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3058 const char *hint = op.suggest_option (new_option);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3059 if (hint)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3060 error_at (loc, "%<-W%serror=%s%>: no option %<-%s%>;"
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3061 " did you mean %<-%s%>?", value ? "" : "no-",
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3062 arg, new_option, hint);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3063 else
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3064 error_at (loc, "%<-W%serror=%s%>: no option %<-%s%>",
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3065 value ? "" : "no-", arg, new_option);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3066 }
111
kono
parents: 67
diff changeset
3067 else if (!(cl_options[option_index].flags & CL_WARNING))
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3068 error_at (loc, "%<-Werror=%s%>: %<-%s%> is not an option that "
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3069 "controls warnings", arg, new_option);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3070 else
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3071 {
63
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
3072 const diagnostic_t kind = value ? DK_ERROR : DK_WARNING;
111
kono
parents: 67
diff changeset
3073 const char *arg = NULL;
63
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
3074
111
kono
parents: 67
diff changeset
3075 if (cl_options[option_index].flags & CL_JOINED)
kono
parents: 67
diff changeset
3076 arg = new_option + cl_options[option_index].opt_len;
kono
parents: 67
diff changeset
3077 control_warning_option (option_index, (int) kind, arg, value,
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3078 loc, lang_mask,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3079 handlers, opts, opts_set, dc);
0
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3080 }
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3081 free (new_option);
a06113de4d67 first commit
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3082 }
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3083
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3084 /* Return malloced memory for the name of the option OPTION_INDEX
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3085 which enabled a diagnostic (context CONTEXT), originally of type
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3086 ORIG_DIAG_KIND but possibly converted to DIAG_KIND by options such
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3087 as -Werror. */
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3088
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3089 char *
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3090 option_name (diagnostic_context *context, int option_index,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3091 diagnostic_t orig_diag_kind, diagnostic_t diag_kind)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3092 {
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3093 if (option_index)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3094 {
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3095 /* A warning classified as an error. */
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3096 if ((orig_diag_kind == DK_WARNING || orig_diag_kind == DK_PEDWARN)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3097 && diag_kind == DK_ERROR)
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3098 return concat (cl_options[OPT_Werror_].opt_text,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3099 /* Skip over "-W". */
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3100 cl_options[option_index].opt_text + 2,
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3101 NULL);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3102 /* A warning with option. */
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3103 else
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3104 return xstrdup (cl_options[option_index].opt_text);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3105 }
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3106 /* A warning without option classified as an error. */
111
kono
parents: 67
diff changeset
3107 else if ((orig_diag_kind == DK_WARNING || orig_diag_kind == DK_PEDWARN
kono
parents: 67
diff changeset
3108 || diag_kind == DK_WARNING)
kono
parents: 67
diff changeset
3109 && context->warning_as_error_requested)
kono
parents: 67
diff changeset
3110 return xstrdup (cl_options[OPT_Werror].opt_text);
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3111 else
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3112 return NULL;
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
3113 }
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3114
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3115 /* Return malloced memory for a URL describing the option OPTION_INDEX
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3116 which enabled a diagnostic (context CONTEXT). */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3117
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3118 char *
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3119 get_option_url (diagnostic_context *, int option_index)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3120 {
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3121 if (option_index)
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3122 /* DOCUMENTATION_ROOT_URL should be supplied via -D by the Makefile
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3123 (see --with-documentation-root-url).
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3124
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3125 Expect an anchor of the form "index-Wfoo" e.g.
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3126 <a name="index-Wformat"></a>, and thus an id within
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3127 the URL of "#index-Wformat". */
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3128 return concat (DOCUMENTATION_ROOT_URL,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3129 "Warning-Options.html",
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3130 "#index", cl_options[option_index].opt_text,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3131 NULL);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3132 else
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3133 return NULL;
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
3134 }