Commit 8eebb258 by Richard Stallman

*** empty log message ***

From-SVN: r983
parent 648ebe7b
...@@ -1324,10 +1324,11 @@ duplicate_decls (newdecl, olddecl) ...@@ -1324,10 +1324,11 @@ duplicate_decls (newdecl, olddecl)
warning_with_decl (olddecl, "non-prototype definition here"); warning_with_decl (olddecl, "non-prototype definition here");
} }
} }
/* Warn if function is now inline /* Warn about mismatches in various flags. */
but was previously declared not inline and has been called. */
else else
{ {
/* Warn if function is now inline
but was previously declared not inline and has been called. */
if (TREE_CODE (olddecl) == FUNCTION_DECL if (TREE_CODE (olddecl) == FUNCTION_DECL
&& ! TREE_INLINE (olddecl) && TREE_INLINE (newdecl) && ! TREE_INLINE (olddecl) && TREE_INLINE (newdecl)
&& TREE_USED (olddecl)) && TREE_USED (olddecl))
...@@ -1345,8 +1346,10 @@ duplicate_decls (newdecl, olddecl) ...@@ -1345,8 +1346,10 @@ duplicate_decls (newdecl, olddecl)
&& !TREE_PUBLIC (newdecl)) && !TREE_PUBLIC (newdecl))
warning_with_decl (newdecl, "static declaration for `%s' follows non-static"); warning_with_decl (newdecl, "static declaration for `%s' follows non-static");
/* These bits are logically part of the type. */ /* These bits are logically part of the type, for variables.
if (pedantic But not for functions
(where qualifiers are not valid ANSI anyway). */
if (pedantic && TREE_CODE (olddecl) != FUNCTION_DECL
&& (TREE_READONLY (newdecl) != TREE_READONLY (olddecl) && (TREE_READONLY (newdecl) != TREE_READONLY (olddecl)
|| TREE_THIS_VOLATILE (newdecl) != TREE_THIS_VOLATILE (olddecl))) || TREE_THIS_VOLATILE (newdecl) != TREE_THIS_VOLATILE (olddecl)))
pedwarn_with_decl (newdecl, "type qualifiers for `%s' conflict with previous decl"); pedwarn_with_decl (newdecl, "type qualifiers for `%s' conflict with previous decl");
...@@ -3885,9 +3888,20 @@ grokdeclarator (declarator, declspecs, decl_context, initialized) ...@@ -3885,9 +3888,20 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
DECL_ARG_TYPE (decl) = type; DECL_ARG_TYPE (decl) = type;
if (type == float_type_node) if (type == float_type_node)
DECL_ARG_TYPE (decl) = double_type_node; DECL_ARG_TYPE (decl) = double_type_node;
else if (TREE_CODE (type) == INTEGER_TYPE /* Don't use TYPE_PREISION to decide whether to promote,
&& TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node)) because we should convert short if it's the same size as int,
DECL_ARG_TYPE (decl) = integer_type_node; but we should not convert long if it's the same size as int. */
else if (type == char_type_node || type == signed_char_type_node
|| type == unsigned_char_type_node
|| type == short_integer_type_node
|| type == short_unsigned_type_node)
{
if (TYPE_PRECISION (type) == TYPE_PRECISION (integer_type_node)
&& TREE_UNSIGNED (type))
DECL_ARG_TYPE (decl) = unsigned_type_node;
else
DECL_ARG_TYPE (decl) = integer_type_node;
}
DECL_ARG_TYPE_AS_WRITTEN (decl) = type_as_written; DECL_ARG_TYPE_AS_WRITTEN (decl) = type_as_written;
} }
......
...@@ -206,6 +206,7 @@ or with constant text in a single argument. ...@@ -206,6 +206,7 @@ or with constant text in a single argument.
%P like %p, but puts `__' before and after the name of each macro. %P like %p, but puts `__' before and after the name of each macro.
(Except macros that already have __.) (Except macros that already have __.)
This is for ANSI C. This is for ANSI C.
%I Substitute a -iprefix option made from GCC_EXEC_PREFIX.
%s current argument is the name of a library or startup file of some sort. %s current argument is the name of a library or startup file of some sort.
Search for that file in a standard list of directories Search for that file in a standard list of directories
and substitute the full name found. and substitute the full name found.
...@@ -400,7 +401,7 @@ static struct compiler default_compilers[] = ...@@ -400,7 +401,7 @@ static struct compiler default_compilers[] =
{ {
{".c", "@c"}, {".c", "@c"},
{"@c", {"@c",
"cpp -lang-c %{nostdinc*} %{C} %{v} %{A*} %{D*} %{U*} %{I*} %{i*} %{P}\ "cpp -lang-c %{nostdinc*} %{C} %{v} %{A*} %{D*} %{U*} %{I*} %{i*} %{P} %I\
%{C:%{!E:%eGNU C does not support -C without using -E}}\ %{C:%{!E:%eGNU C does not support -C without using -E}}\
%{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d}\ %{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d}\
-undef -D__GNUC__=2 %{ansi:-trigraphs -$ -D__STRICT_ANSI__}\ -undef -D__GNUC__=2 %{ansi:-trigraphs -$ -D__STRICT_ANSI__}\
...@@ -420,7 +421,7 @@ static struct compiler default_compilers[] = ...@@ -420,7 +421,7 @@ static struct compiler default_compilers[] =
%{c:%W{o*}%{!o*:-o %w%b.o}}%{!c:-o %d%w%b.o}\ %{c:%W{o*}%{!o*:-o %w%b.o}}%{!c:-o %d%w%b.o}\
%{!pipe:%g.s} %A\n }}}}"}, %{!pipe:%g.s} %A\n }}}}"},
{"-", {"-",
"%{E:cpp -lang-c %{nostdinc*} %{C} %{v} %{A*} %{D*} %{U*} %{I*} %{i*} %{P}\ "%{E:cpp -lang-c %{nostdinc*} %{C} %{v} %{A*} %{D*} %{U*} %{I*} %{i*} %{P} %I\
%{C:%{!E:%eGNU C does not support -C without using -E}}\ %{C:%{!E:%eGNU C does not support -C without using -E}}\
%{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d}\ %{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d}\
-undef -D__GNUC__=2 %{ansi:-trigraphs -$ -D__STRICT_ANSI__}\ -undef -D__GNUC__=2 %{ansi:-trigraphs -$ -D__STRICT_ANSI__}\
...@@ -432,7 +433,7 @@ static struct compiler default_compilers[] = ...@@ -432,7 +433,7 @@ static struct compiler default_compilers[] =
%{!E:%e-E required when input is from standard input}"}, %{!E:%e-E required when input is from standard input}"},
{".m", "@objective-c"}, {".m", "@objective-c"},
{"@objective-c", {"@objective-c",
"cpp -lang-objc %{nostdinc*} %{C} %{v} %{A*} %{D*} %{U*} %{I*} %{i*} %{P}\ "cpp -lang-objc %{nostdinc*} %{C} %{v} %{A*} %{D*} %{U*} %{I*} %{i*} %{P} %I\
%{C:%{!E:%eGNU C does not support -C without using -E}}\ %{C:%{!E:%eGNU C does not support -C without using -E}}\
%{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d}\ %{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d}\
-undef -D__OBJC__ -D__GNUC__=2 %{ansi:-trigraphs -$ -D__STRICT_ANSI__}\ -undef -D__OBJC__ -D__GNUC__=2 %{ansi:-trigraphs -$ -D__STRICT_ANSI__}\
...@@ -455,7 +456,7 @@ static struct compiler default_compilers[] = ...@@ -455,7 +456,7 @@ static struct compiler default_compilers[] =
{".h", "@c-header"}, {".h", "@c-header"},
{"@c-header", {"@c-header",
"%{!E:%eCompilation of header file requested} \ "%{!E:%eCompilation of header file requested} \
cpp %{nostdinc*} %{C} %{v} %{A*} %{D*} %{U*} %{I*} %{i*} %{P}\ cpp %{nostdinc*} %{C} %{v} %{A*} %{D*} %{U*} %{I*} %{i*} %{P} %I\
%{C:%{!E:%eGNU C does not support -C without using -E}}\ %{C:%{!E:%eGNU C does not support -C without using -E}}\
%{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d} \ %{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d} \
-undef -D__GNUC__=2 %{ansi:-trigraphs -$ -D__STRICT_ANSI__}\ -undef -D__GNUC__=2 %{ansi:-trigraphs -$ -D__STRICT_ANSI__}\
...@@ -468,7 +469,7 @@ static struct compiler default_compilers[] = ...@@ -468,7 +469,7 @@ static struct compiler default_compilers[] =
{".cxx", "@c++"}, {".cxx", "@c++"},
{".C", "@c++"}, {".C", "@c++"},
{"@c++", {"@c++",
"cpp -lang-c++ %{nostdinc*} %{C} %{v} %{A*} %{D*} %{U*} %{I*} %{i*} %{P}\ "cpp -lang-c++ %{nostdinc*} %{C} %{v} %{A*} %{D*} %{U*} %{I*} %{i*} %{P} %I\
%{C:%{!E:%eGNU C++ does not support -C without using -E}}\ %{C:%{!E:%eGNU C++ does not support -C without using -E}}\
%{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d} \ %{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d} \
-undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus \ -undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus \
...@@ -514,7 +515,7 @@ static struct compiler default_compilers[] = ...@@ -514,7 +515,7 @@ static struct compiler default_compilers[] =
%{c:%W{o*}%{!o*:-o %w%b.o}}%{!c:-o %d%w%b.o} %i %A\n }"}, %{c:%W{o*}%{!o*:-o %w%b.o}}%{!c:-o %d%w%b.o} %i %A\n }"},
{".S", "@assembler-with-cpp"}, {".S", "@assembler-with-cpp"},
{"@assembler-with-cpp", {"@assembler-with-cpp",
"cpp -lang-asm %{nostdinc*} %{C} %{v} %{A*} %{D*} %{U*} %{I*} %{i*} %{P}\ "cpp -lang-asm %{nostdinc*} %{C} %{v} %{A*} %{D*} %{U*} %{I*} %{i*} %{P} %I\
%{C:%{!E:%eGNU C does not support -C without using -E}}\ %{C:%{!E:%eGNU C does not support -C without using -E}}\
%{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d} %{trigraphs} \ %{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d} %{trigraphs} \
-undef -$ %{!undef:%p %P} -D__ASSEMBLER__ \ -undef -$ %{!undef:%p %P} -D__ASSEMBLER__ \
...@@ -829,6 +830,10 @@ static struct path_prefix library_prefix = { 0, 0, "libraryfile" }; ...@@ -829,6 +830,10 @@ static struct path_prefix library_prefix = { 0, 0, "libraryfile" };
static char *machine_suffix = 0; static char *machine_suffix = 0;
/* Adjusted value of GCC_EXEC_PREFIX envvar. */
static char *gcc_exec_prefix;
/* Default prefixes to attach to command names. */ /* Default prefixes to attach to command names. */
#ifdef CROSS_COMPILE /* Don't use these prefixes for a cross compiler. */ #ifdef CROSS_COMPILE /* Don't use these prefixes for a cross compiler. */
...@@ -1682,17 +1687,18 @@ process_command (argc, argv) ...@@ -1682,17 +1687,18 @@ process_command (argc, argv)
char *spec_lang = 0; char *spec_lang = 0;
int last_language_n_infiles; int last_language_n_infiles;
gcc_exec_prefix = getenv ("GCC_EXEC_PREFIX");
n_switches = 0; n_switches = 0;
n_infiles = 0; n_infiles = 0;
spec_version = version_string; spec_version = version_string;
/* Set up the default search paths. */ /* Set up the default search paths. */
temp = getenv ("GCC_EXEC_PREFIX"); if (gcc_exec_prefix)
if (temp)
{ {
add_prefix (&exec_prefix, temp, 0, 0, 0); add_prefix (&exec_prefix, gcc_exec_prefix, 0, 0, 0);
add_prefix (&startfile_prefix, temp, 0, 0, 0); add_prefix (&startfile_prefix, gcc_exec_prefix, 0, 0, 0);
} }
/* COMPILER_PATH and LIBRARY_PATH have values /* COMPILER_PATH and LIBRARY_PATH have values
...@@ -1902,6 +1908,7 @@ process_command (argc, argv) ...@@ -1902,6 +1908,7 @@ process_command (argc, argv)
if (!strcmp (p, "save-temps")) if (!strcmp (p, "save-temps"))
{ {
save_temps_flag = 1; save_temps_flag = 1;
n_switches++;
break; break;
} }
default: default:
...@@ -2024,6 +2031,19 @@ process_command (argc, argv) ...@@ -2024,6 +2031,19 @@ process_command (argc, argv)
switches[n_switches].part1 = 0; switches[n_switches].part1 = 0;
infiles[n_infiles].name = 0; infiles[n_infiles].name = 0;
/* If we have a GCC_EXEC_PREFIX envvar, modify it for cpp's sake. */
if (gcc_exec_prefix)
{
temp = (char *) xmalloc (strlen (gcc_exec_prefix) + strlen (spec_version)
+ strlen (spec_machine) + 3);
strcpy (temp, gcc_exec_prefix);
strcat (temp, spec_version);
strcat (temp, "/");
strcat (temp, spec_machine);
strcat (temp, "/");
gcc_exec_prefix = temp;
}
} }
/* Process a spec string, accumulating and running commands. */ /* Process a spec string, accumulating and running commands. */
...@@ -2323,6 +2343,17 @@ do_spec_1 (spec, inswitch, soft_matched_part) ...@@ -2323,6 +2343,17 @@ do_spec_1 (spec, inswitch, soft_matched_part)
arg_going = 1; arg_going = 1;
break; break;
case 'I':
if (gcc_exec_prefix)
{
do_spec_1 ("-imacros", 1, 0);
/* Make this a separate argument. */
do_spec_1 (" ", 0, 0);
do_spec_1 (gcc_exec_prefix, 1, 0);
do_spec_1 (" ", 0, 0);
}
break;
case 'o': case 'o':
{ {
register int f; register int f;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment