PING: PATCH: Use int64 for x86 options
H.J. Lu
hjl.tools@gmail.com
Mon Aug 8 02:18:00 GMT 2011
On Sat, Aug 6, 2011 at 9:05 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
> Ping. AVX2 support depends on this patch.
>
> Thanks.
>
> On Thu, Aug 4, 2011 at 5:49 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
>> On Thu, Aug 4, 2011 at 4:44 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
>>> On Thu, Aug 4, 2011 at 3:46 PM, Joseph S. Myers <joseph@codesourcery.com> wrote:
>>>> On Thu, 4 Aug 2011, H.J. Lu wrote:
>>>>
>>>>> Here is the updated patch to get proper HOST_WIDE_INT bits and 1
>>>>> through a new file, opt-gen.c. OK for trunk?
>>>>
>>>> Using another generator program like this can't be the best approach
>>>> (apart from anything else, when built for the build system hwint.h should
>>>> reflect the build system types not the host system types; cf.
>>>> <http://gcc.gnu.org/ml/gcc/2010-08/msg00111.html> where I suspected that
>>>> sort of host/build confusion of causing a reported build failure).
>>>>
>>>> You want opth-gen.awk to know the number of bits to give errors. Note
>>>> that the errors are given by generating #error into the output file. It's
>>>> easy enough to generate #if conditions into the file that compare with
>>>> HOST_BITS_PER_WIDE_INT.
>>>>
>>>> You want opth-gen.awk to know whether to use 1LL as the shifted constant.
>>>> You can easily enough make hwint.h contain a HOST_WIDE_INT_1 macro,
>>>> defined to 1L or 1LL as appropriate.
>>>>
>>>
>>>
>>> Here is the updated patch. OK for trunk?
>>>
>>
>> Small update. Replace 1LL with HOST_WIDE_INT_1 in PTA_XXX.
>> OK for trunk?
>>
>> Thanks.
>>
>> --
>> H.J.
>> ---
>> 2011-08-04 H.J. Lu <hongjiu.lu@intel.com>
>> Igor Zamyatin <igor.zamyatin@intel.com>
>>
>> * hwint.h (HOST_WIDE_INT_1): New.
>>
>> * opt-functions.awk (switch_bit_fields): Initialize the
>> host_wide_int field.
>> (host_wide_int_var_name): New.
>> (var_type_struct): Check and return HOST_WIDE_INT.
>>
>> * opt-read.awk: Handle HOST_WIDE_INT for "Variable".
>>
>> * optc-save-gen.awk: Support HOST_WIDE_INT on var_target_other.
>>
>> * opth-gen.awk: Use HOST_WIDE_INT_1 on HOST_WIDE_INT. Properly
>> check masks for HOST_WIDE_INT.
>>
>> * opts-common.c (set_option): Support HOST_WIDE_INT Flag_var.
>>
>> * opts.h (cl_option): Add cl_host_wide_int. Change var_value
>> to HOST_WIDE_INT.
>>
>> * config/i386/i386-c.c (ix86_target_macros_internal): Replace int
>> with HOST_WIDE_INT for isa_flag.
>> (ix86_pragma_target_parse): Replace int with HOST_WIDE_INT for
>> isa variables.
>>
>> * config/i386/i386.c (ix86_target_string): Replace int with
>> HOST_WIDE_INT for isa. Use HOST_WIDE_INT_PRINT to print isa.
>> (ix86_target_opts): Replace int with HOST_WIDE_INT on mask.
>> (pta_flags): Removed.
>> (PTA_XXX): Redefined as (HOST_WIDE_INT_1 << X).
>> (pta): Use HOST_WIDE_INT on flags.
>> (builtin_isa): Use HOST_WIDE_INT on isa.
>> (ix86_add_new_builtins): Likewise.
>> (def_builtin): Use HOST_WIDE_INT on mask.
>> (def_builtin_const): Likewise.
>> (builtin_description): Likewise.
>>
>> * config/i386/i386.opt (ix86_isa_flags): Replace int with
>> HOST_WIDE_INT.
>> (ix86_isa_flags_explicit): Likewise.
>> (x_ix86_isa_flags_explicit): Likewise.
>>
>
>
>
> --
> H.J.
>
HOST_BITS_PER_WIDE_INT isn't defined in target library.
I need to check if HOST_BITS_PER_WIDE_INT is defined
first. Here is the updated patch.
--
H.J.
-------------- next part --------------
2011-08-07 H.J. Lu <hongjiu.lu@intel.com>
Igor Zamyatin <igor.zamyatin@intel.com>
* hwint.h (HOST_WIDE_INT_1): New.
* opt-functions.awk (switch_bit_fields): Initialize the
host_wide_int field.
(host_wide_int_var_name): New.
(var_type_struct): Check and return HOST_WIDE_INT.
* opt-read.awk: Handle HOST_WIDE_INT for "Variable".
* optc-save-gen.awk: Support HOST_WIDE_INT on var_target_other.
* opth-gen.awk: Use HOST_WIDE_INT_1 on HOST_WIDE_INT. Properly
check masks for HOST_WIDE_INT.
* opts-common.c (set_option): Support HOST_WIDE_INT Flag_var.
* opts.h (cl_option): Add cl_host_wide_int. Change var_value
to HOST_WIDE_INT.
* config/i386/i386-c.c (ix86_target_macros_internal): Replace int
with HOST_WIDE_INT for isa_flag.
(ix86_pragma_target_parse): Replace int with HOST_WIDE_INT for
isa variables.
* config/i386/i386.c (ix86_target_string): Replace int with
HOST_WIDE_INT for isa. Use HOST_WIDE_INT_PRINT to print isa.
(ix86_target_opts): Replace int with HOST_WIDE_INT on mask.
(pta_flags): Removed.
(PTA_XXX): Redefined as (HOST_WIDE_INT_1 << X).
(pta): Use HOST_WIDE_INT on flags.
(builtin_isa): Use HOST_WIDE_INT on isa.
(ix86_add_new_builtins): Likewise.
(def_builtin): Use HOST_WIDE_INT on mask.
(def_builtin_const): Likewise.
(builtin_description): Likewise.
* config/i386/i386.opt (ix86_isa_flags): Replace int with
HOST_WIDE_INT.
(ix86_isa_flags_explicit): Likewise.
(x_ix86_isa_flags_explicit): Likewise.
diff --git a/gcc/config/i386/i386-c.c b/gcc/config/i386/i386-c.c
index 1fc333c..c5a770f 100644
--- a/gcc/config/i386/i386-c.c
+++ b/gcc/config/i386/i386-c.c
@@ -34,14 +34,14 @@ along with GCC; see the file COPYING3. If not see
static bool ix86_pragma_target_parse (tree, tree);
static void ix86_target_macros_internal
- (int, enum processor_type, enum processor_type, enum fpmath_unit,
+ (HOST_WIDE_INT, enum processor_type, enum processor_type, enum fpmath_unit,
void (*def_or_undef) (cpp_reader *, const char *));
/* Internal function to either define or undef the appropriate system
macros. */
static void
-ix86_target_macros_internal (int isa_flag,
+ix86_target_macros_internal (HOST_WIDE_INT isa_flag,
enum processor_type arch,
enum processor_type tune,
enum fpmath_unit fpmath,
@@ -301,9 +301,9 @@ ix86_pragma_target_parse (tree args, tree pop_target)
tree cur_tree;
struct cl_target_option *prev_opt;
struct cl_target_option *cur_opt;
- int prev_isa;
- int cur_isa;
- int diff_isa;
+ HOST_WIDE_INT prev_isa;
+ HOST_WIDE_INT cur_isa;
+ HOST_WIDE_INT diff_isa;
enum processor_type prev_arch;
enum processor_type prev_tune;
enum processor_type cur_arch;
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 19dd243..2af748e 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -2500,7 +2500,7 @@ static int ix86_function_regparm (const_tree, const_tree);
static void ix86_compute_frame_layout (struct ix86_frame *);
static bool ix86_expand_vector_init_one_nonzero (bool, enum machine_mode,
rtx, rtx, int);
-static void ix86_add_new_builtins (int);
+static void ix86_add_new_builtins (HOST_WIDE_INT);
static rtx ix86_expand_vec_perm_builtin (tree);
static tree ix86_canonical_va_list_type (tree);
static void predict_jump (int);
@@ -2514,8 +2514,8 @@ enum ix86_function_specific_strings
IX86_FUNCTION_SPECIFIC_MAX
};
-static char *ix86_target_string (int, int, const char *, const char *,
- enum fpmath_unit, bool);
+static char *ix86_target_string (HOST_WIDE_INT, int, const char *,
+ const char *, enum fpmath_unit, bool);
static void ix86_debug_options (void) ATTRIBUTE_UNUSED;
static void ix86_function_specific_save (struct cl_target_option *);
static void ix86_function_specific_restore (struct cl_target_option *);
@@ -2633,13 +2633,14 @@ ix86_using_red_zone (void)
responsible for freeing the string. */
static char *
-ix86_target_string (int isa, int flags, const char *arch, const char *tune,
- enum fpmath_unit fpmath, bool add_nl_p)
+ix86_target_string (HOST_WIDE_INT isa, int flags, const char *arch,
+ const char *tune, enum fpmath_unit fpmath,
+ bool add_nl_p)
{
struct ix86_target_opts
{
const char *option; /* option string */
- int mask; /* isa mask options */
+ HOST_WIDE_INT mask; /* isa mask options */
};
/* This table is ordered so that options like -msse4.2 that imply
@@ -2747,7 +2748,8 @@ ix86_target_string (int isa, int flags, const char *arch, const char *tune,
if (isa && add_nl_p)
{
opts[num++][0] = isa_other;
- sprintf (isa_other, "(other isa: %#x)", isa);
+ sprintf (isa_other, "(other isa: %#" HOST_WIDE_INT_PRINT "x)",
+ isa);
}
/* Add flag options. */
@@ -2888,47 +2890,44 @@ ix86_option_override_internal (bool main_args_p)
const char *suffix;
const char *sw;
- enum pta_flags
- {
- PTA_SSE = 1 << 0,
- PTA_SSE2 = 1 << 1,
- PTA_SSE3 = 1 << 2,
- PTA_MMX = 1 << 3,
- PTA_PREFETCH_SSE = 1 << 4,
- PTA_3DNOW = 1 << 5,
- PTA_3DNOW_A = 1 << 6,
- PTA_64BIT = 1 << 7,
- PTA_SSSE3 = 1 << 8,
- PTA_CX16 = 1 << 9,
- PTA_POPCNT = 1 << 10,
- PTA_ABM = 1 << 11,
- PTA_SSE4A = 1 << 12,
- PTA_NO_SAHF = 1 << 13,
- PTA_SSE4_1 = 1 << 14,
- PTA_SSE4_2 = 1 << 15,
- PTA_AES = 1 << 16,
- PTA_PCLMUL = 1 << 17,
- PTA_AVX = 1 << 18,
- PTA_FMA = 1 << 19,
- PTA_MOVBE = 1 << 20,
- PTA_FMA4 = 1 << 21,
- PTA_XOP = 1 << 22,
- PTA_LWP = 1 << 23,
- PTA_FSGSBASE = 1 << 24,
- PTA_RDRND = 1 << 25,
- PTA_F16C = 1 << 26,
- PTA_BMI = 1 << 27,
- PTA_TBM = 1 << 28,
- PTA_LZCNT = 1 << 29
- /* if this reaches 32, need to widen struct pta flags below */
- };
+#define PTA_3DNOW (HOST_WIDE_INT_1 << 0)
+#define PTA_3DNOW_A (HOST_WIDE_INT_1 << 1)
+#define PTA_64BIT (HOST_WIDE_INT_1 << 2)
+#define PTA_ABM (HOST_WIDE_INT_1 << 3)
+#define PTA_AES (HOST_WIDE_INT_1 << 4)
+#define PTA_AVX (HOST_WIDE_INT_1 << 5)
+#define PTA_BMI (HOST_WIDE_INT_1 << 6)
+#define PTA_CX16 (HOST_WIDE_INT_1 << 7)
+#define PTA_F16C (HOST_WIDE_INT_1 << 8)
+#define PTA_FMA (HOST_WIDE_INT_1 << 9)
+#define PTA_FMA4 (HOST_WIDE_INT_1 << 10)
+#define PTA_FSGSBASE (HOST_WIDE_INT_1 << 11)
+#define PTA_LWP (HOST_WIDE_INT_1 << 12)
+#define PTA_LZCNT (HOST_WIDE_INT_1 << 13)
+#define PTA_MMX (HOST_WIDE_INT_1 << 14)
+#define PTA_MOVBE (HOST_WIDE_INT_1 << 15)
+#define PTA_NO_SAHF (HOST_WIDE_INT_1 << 16)
+#define PTA_PCLMUL (HOST_WIDE_INT_1 << 17)
+#define PTA_POPCNT (HOST_WIDE_INT_1 << 18)
+#define PTA_PREFETCH_SSE (HOST_WIDE_INT_1 << 19)
+#define PTA_RDRND (HOST_WIDE_INT_1 << 20)
+#define PTA_SSE (HOST_WIDE_INT_1 << 21)
+#define PTA_SSE2 (HOST_WIDE_INT_1 << 22)
+#define PTA_SSE3 (HOST_WIDE_INT_1 << 23)
+#define PTA_SSE4_1 (HOST_WIDE_INT_1 << 24)
+#define PTA_SSE4_2 (HOST_WIDE_INT_1 << 25)
+#define PTA_SSE4A (HOST_WIDE_INT_1 << 26)
+#define PTA_SSSE3 (HOST_WIDE_INT_1 << 27)
+#define PTA_TBM (HOST_WIDE_INT_1 << 28)
+#define PTA_XOP (HOST_WIDE_INT_1 << 29)
+/* if this reaches 64, need to widen struct pta flags below */
static struct pta
{
const char *const name; /* processor name or nickname. */
const enum processor_type processor;
const enum attr_cpu schedule;
- const unsigned /*enum pta_flags*/ flags;
+ const unsigned HOST_WIDE_INT flags;
}
const processor_alias_table[] =
{
@@ -24067,7 +24066,7 @@ static GTY(()) tree ix86_builtins[(int) IX86_BUILTIN_MAX];
struct builtin_isa {
const char *name; /* function name */
enum ix86_builtin_func_type tcode; /* type to use in the declaration */
- int isa; /* isa_flags this builtin is defined for */
+ HOST_WIDE_INT isa; /* isa_flags this builtin is defined for */
bool const_p; /* true if the declaration is constant */
bool set_and_not_built_p;
};
@@ -24092,7 +24091,8 @@ static struct builtin_isa ix86_builtins_isa[(int) IX86_BUILTIN_MAX];
errors if a builtin is added in the middle of a function scope. */
static inline tree
-def_builtin (int mask, const char *name, enum ix86_builtin_func_type tcode,
+def_builtin (HOST_WIDE_INT mask, const char *name,
+ enum ix86_builtin_func_type tcode,
enum ix86_builtins code)
{
tree decl = NULL_TREE;
@@ -24130,7 +24130,7 @@ def_builtin (int mask, const char *name, enum ix86_builtin_func_type tcode,
/* Like def_builtin, but also marks the function decl "const". */
static inline tree
-def_builtin_const (int mask, const char *name,
+def_builtin_const (HOST_WIDE_INT mask, const char *name,
enum ix86_builtin_func_type tcode, enum ix86_builtins code)
{
tree decl = def_builtin (mask, name, tcode, code);
@@ -24147,7 +24147,7 @@ def_builtin_const (int mask, const char *name,
declarations to the tree, even if we didn't use them. */
static void
-ix86_add_new_builtins (int isa)
+ix86_add_new_builtins (HOST_WIDE_INT isa)
{
int i;
@@ -24181,7 +24181,7 @@ ix86_add_new_builtins (int isa)
struct builtin_description
{
- const unsigned int mask;
+ const HOST_WIDE_INT mask;
const enum insn_code icode;
const char *const name;
const enum ix86_builtins code;
diff --git a/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt
index f197dd8..654f4eb 100644
--- a/gcc/config/i386/i386.opt
+++ b/gcc/config/i386/i386.opt
@@ -24,12 +24,12 @@ config/i386/i386-opts.h
; Bit flags that specify the ISA we are compiling for.
Variable
-int ix86_isa_flags = TARGET_64BIT_DEFAULT | TARGET_SUBTARGET_ISA_DEFAULT
+HOST_WIDE_INT ix86_isa_flags = TARGET_64BIT_DEFAULT | TARGET_SUBTARGET_ISA_DEFAULT
; A mask of ix86_isa_flags that includes bit X if X was set or cleared
; on the command line.
Variable
-int ix86_isa_flags_explicit
+HOST_WIDE_INT ix86_isa_flags_explicit
;; Definitions to add to the cl_target_option structure
;; -march= processor
@@ -50,7 +50,7 @@ unsigned char branch_cost
;; which flags were passed by the user
TargetSave
-int x_ix86_isa_flags_explicit
+HOST_WIDE_INT x_ix86_isa_flags_explicit
;; which flags were passed by the user
TargetSave
diff --git a/gcc/hwint.h b/gcc/hwint.h
index fa77b11..6135136 100644
--- a/gcc/hwint.h
+++ b/gcc/hwint.h
@@ -79,6 +79,7 @@ extern char sizeof_long_long_must_be_8[sizeof(long long) == 8 ? 1 : -1];
#if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
# define HOST_WIDE_INT_PRINT HOST_LONG_FORMAT
# define HOST_WIDE_INT_PRINT_C "L"
+# define HOST_WIDE_INT_1 1L
/* 'long' might be 32 or 64 bits, and the number of leading zeroes
must be tweaked accordingly. */
# if HOST_BITS_PER_WIDE_INT == 64
@@ -91,6 +92,7 @@ extern char sizeof_long_long_must_be_8[sizeof(long long) == 8 ? 1 : -1];
#else
# define HOST_WIDE_INT_PRINT HOST_LONG_LONG_FORMAT
# define HOST_WIDE_INT_PRINT_C "LL"
+# define HOST_WIDE_INT_1 1LL
/* We can assume that 'long long' is at least 64 bits. */
# define HOST_WIDE_INT_PRINT_DOUBLE_HEX \
"0x%" HOST_LONG_LONG_FORMAT "x%016" HOST_LONG_LONG_FORMAT "x"
diff --git a/gcc/opt-functions.awk b/gcc/opt-functions.awk
index 945eeb1..1f582fb 100644
--- a/gcc/opt-functions.awk
+++ b/gcc/opt-functions.awk
@@ -110,6 +110,11 @@ function switch_flags (flags)
# Return bit-field initializers for option flags FLAGS.
function switch_bit_fields (flags)
{
+ vn = var_name(flags);
+ if (host_wide_int[vn] == "yes")
+ hwi = "Host_Wide_Int"
+ else
+ hwi = ""
result = ""
sep_args = opt_args("Args", flags)
if (sep_args == "")
@@ -126,6 +131,7 @@ function switch_bit_fields (flags)
flag_init("RejectNegative", flags) \
flag_init("JoinedOrMissing", flags) \
flag_init("UInteger", flags) \
+ flag_init("Host_Wide_Int", hwi) \
flag_init("ToLower", flags) \
flag_init("Report", flags)
@@ -140,6 +146,17 @@ function var_name(flags)
return nth_arg(0, opt_args("Var", flags))
}
+# Return the name of the variable if FLAGS has a HOST_WIDE_INT variable.
+# Return the empty string otherwise.
+function host_wide_int_var_name(flags)
+{
+ split (flags, array, "[ \t]+")
+ if (array[1] == "HOST_WIDE_INT")
+ return array[2]
+ else
+ return ""
+}
+
# Return true if the option described by FLAGS has a globally-visible state.
function global_state_p(flags)
{
@@ -197,8 +214,12 @@ function var_type_struct(flags)
return enum_type[en] " "
}
else if (!flag_set_p("Joined.*", flags) && !flag_set_p("Separate", flags)) {
- if (flag_set_p(".*Mask.*", flags))
- return "int "
+ if (flag_set_p(".*Mask.*", flags)) {
+ if (host_wide_int[var_name(flags)] == "yes")
+ return "HOST_WIDE_INT "
+ else
+ return "int "
+ }
else
return "signed char "
}
diff --git a/gcc/opt-read.awk b/gcc/opt-read.awk
index c488ed5..6a4d4de 100644
--- a/gcc/opt-read.awk
+++ b/gcc/opt-read.awk
@@ -51,6 +51,9 @@ BEGIN {
else if ($1 == "Variable") {
extra_vars[n_extra_vars] = $2
n_extra_vars++
+ name = host_wide_int_var_name($2)
+ if (name != "")
+ host_wide_int[name] = "yes"
}
else if ($1 == "TargetVariable") {
# Combination of TargetSave and Variable
diff --git a/gcc/optc-save-gen.awk b/gcc/optc-save-gen.awk
index 4efc115..654d869 100644
--- a/gcc/optc-save-gen.awk
+++ b/gcc/optc-save-gen.awk
@@ -363,10 +363,16 @@ print "{";
print " fputs (\"\\n\", file);";
for (i = 0; i < n_target_other; i++) {
print " if (ptr->x_" var_target_other[i] ")";
- print " fprintf (file, \"%*s%s (%#lx)\\n\",";
+ if (host_wide_int[var_target_other[i]] == "yes")
+ print " fprintf (file, \"%*s%s (%#\" HOST_WIDE_INT_PRINT \"x)\\n\",";
+ else
+ print " fprintf (file, \"%*s%s (%#x)\\n\",";
print " indent, \"\",";
print " \"" var_target_other[i] "\",";
- print " (unsigned long)ptr->x_" var_target_other[i] ");";
+ if (host_wide_int[var_target_other[i]] == "yes")
+ print " ptr->x_" var_target_other[i] ");";
+ else
+ print " (unsigned long)ptr->x_" var_target_other[i] ");";
print "";
}
diff --git a/gcc/opth-gen.awk b/gcc/opth-gen.awk
index 876e0f6..2bae695 100644
--- a/gcc/opth-gen.awk
+++ b/gcc/opth-gen.awk
@@ -300,18 +300,26 @@ for (i = 0; i < n_opts; i++) {
name = opt_args("Mask", flags[i])
vname = var_name(flags[i])
mask = "MASK_"
+ mask_1 = "1"
if (vname != "") {
mask = "OPTION_MASK_"
+ if (host_wide_int[vname] == "yes")
+ mask_1 = "HOST_WIDE_INT_1"
}
if (name != "" && !flag_set_p("MaskExists", flags[i]))
- print "#define " mask name " (1 << " masknum[vname]++ ")"
+ print "#define " mask name " (" mask_1 " << " masknum[vname]++ ")"
}
for (i = 0; i < n_extra_masks; i++) {
print "#define MASK_" extra_masks[i] " (1 << " masknum[""]++ ")"
}
for (var in masknum) {
- if (masknum[var] > 31) {
+ if (var != "" && host_wide_int[var] == "yes") {
+ print" #if defined(HOST_BITS_PER_WIDE_INT) && " masknum[var] " >= HOST_BITS_PER_WIDE_INT"
+ print "#error too many masks for " var
+ print "#endif"
+ }
+ else if (masknum[var] > 31) {
if (var == "")
print "#error too many target masks"
else
diff --git a/gcc/opts-common.c b/gcc/opts-common.c
index 973dd7e..1c2138f 100644
--- a/gcc/opts-common.c
+++ b/gcc/opts-common.c
@@ -1098,11 +1098,26 @@ set_option (struct gcc_options *opts, struct gcc_options *opts_set,
case CLVC_BIT_CLEAR:
case CLVC_BIT_SET:
if ((value != 0) == (option->var_type == CLVC_BIT_SET))
- *(int *) flag_var |= option->var_value;
+ {
+ if (option->cl_host_wide_int)
+ *(HOST_WIDE_INT *) flag_var |= option->var_value;
+ else
+ *(int *) flag_var |= option->var_value;
+ }
else
- *(int *) flag_var &= ~option->var_value;
+ {
+ if (option->cl_host_wide_int)
+ *(HOST_WIDE_INT *) flag_var &= ~option->var_value;
+ else
+ *(int *) flag_var &= ~option->var_value;
+ }
if (set_flag_var)
- *(int *) set_flag_var |= option->var_value;
+ {
+ if (option->cl_host_wide_int)
+ *(HOST_WIDE_INT *) set_flag_var |= option->var_value;
+ else
+ *(int *) set_flag_var |= option->var_value;
+ }
break;
case CLVC_STRING:
diff --git a/gcc/opts.h b/gcc/opts.h
index b070c8f..3c0fe3f 100644
--- a/gcc/opts.h
+++ b/gcc/opts.h
@@ -96,6 +96,8 @@ struct cl_option
BOOL_BITFIELD cl_missing_ok : 1;
/* Argument is an integer >=0. */
BOOL_BITFIELD cl_uinteger : 1;
+ /* Argument is a HOST_WIDE_INT. */
+ BOOL_BITFIELD cl_host_wide_int : 1;
/* Argument should be converted to lowercase. */
BOOL_BITFIELD cl_tolower : 1;
/* Report argument with -fverbose-asm */
@@ -109,7 +111,7 @@ struct cl_option
/* How this option's value is determined and sets a field. */
enum cl_var_type var_type;
/* Value or bit-mask with which to set a field. */
- int var_value;
+ HOST_WIDE_INT var_value;
};
/* Records that the state of an option consists of SIZE bytes starting
More information about the Gcc
mailing list