aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJie Zhang <jie@codesourcery.com>2011-02-23 02:04:43 +0000
committerJie Zhang <jiez@gcc.gnu.org>2011-02-23 02:04:43 +0000
commit7fcf46f509414d97aea64a10f441781ad8c4b9de (patch)
treeda36449698452cc5da633bd67569a6ff13a6529d /gcc
parentf85b70fda4fca7f96777eebef3956383bbf4771f (diff)
downloadgcc-7fcf46f509414d97aea64a10f441781ad8c4b9de.zip
gcc-7fcf46f509414d97aea64a10f441781ad8c4b9de.tar.gz
gcc-7fcf46f509414d97aea64a10f441781ad8c4b9de.tar.bz2
opts-common.c (decode_cmdline_option): Print empty string argument as "" in decoded->orig_option_with_args_text.
* opts-common.c (decode_cmdline_option): Print empty string argument as "" in decoded->orig_option_with_args_text. * gcc.c (execute): Print empty string argument as "" in the verbose output. (do_spec_1): Keep empty string argument. testsuite/ * gcc.dg/cpp/include7.c: New test. From-SVN: r170426
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/gcc.c16
-rw-r--r--gcc/opts-common.c15
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/cpp/include7.c3
5 files changed, 42 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 12d3137..aaa703d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2011-02-23 Jie Zhang <jie@codesourcery.com>
+
+ * opts-common.c (decode_cmdline_option): Print empty string
+ argument as "" in decoded->orig_option_with_args_text.
+ * gcc.c (execute): Print empty string argument as ""
+ in the verbose output.
+ (do_spec_1): Keep empty string argument.
+
2011-02-23 Nathan Froyd <froydnj@codesourcery.com>
* config.gcc: Declare score-* and crx-* obsolete.
diff --git a/gcc/gcc.c b/gcc/gcc.c
index 6a26aaf..75f522e 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -2538,13 +2538,20 @@ execute (void)
}
fputc ('"', stderr);
}
+ /* If it's empty, print "". */
+ else if (!**j)
+ fprintf (stderr, " \"\"");
else
fprintf (stderr, " %s", *j);
}
}
else
for (j = commands[i].argv; *j; j++)
- fprintf (stderr, " %s", *j);
+ /* If it's empty, print "". */
+ if (!**j)
+ fprintf (stderr, " \"\"");
+ else
+ fprintf (stderr, " %s", *j);
/* Print a pipe symbol after all but the last command. */
if (i + 1 != n_commands)
@@ -4423,6 +4430,10 @@ do_spec_1 (const char *spec, int inswitch, const char *soft_matched_part)
int i;
int value;
+ /* If it's an empty string argument to a switch, keep it as is. */
+ if (inswitch && !*p)
+ arg_going = 1;
+
while ((c = *p++))
/* If substituting a switch, treat all chars like letters.
Otherwise, NL, SPC, TAB and % are special. */
@@ -5149,7 +5160,8 @@ do_spec_1 (const char *spec, int inswitch, const char *soft_matched_part)
case '*':
if (soft_matched_part)
{
- do_spec_1 (soft_matched_part, 1, NULL);
+ if (soft_matched_part[0])
+ do_spec_1 (soft_matched_part, 1, NULL);
do_spec_1 (" ", 0, NULL);
}
else
diff --git a/gcc/opts-common.c b/gcc/opts-common.c
index 3c4044a..f958b7e 100644
--- a/gcc/opts-common.c
+++ b/gcc/opts-common.c
@@ -607,11 +607,15 @@ decode_cmdline_option (const char **argv, unsigned int lang_mask,
{
if (i < result)
{
+ size_t len;
if (opt_index == OPT_SPECIAL_unknown)
decoded->canonical_option[i] = argv[i];
else
decoded->canonical_option[i] = NULL;
- total_len += strlen (argv[i]) + 1;
+ len = strlen (argv[i]);
+ /* If the argument is an empty string, we will print it as "" in
+ orig_option_with_args_text. */
+ total_len += (len != 0 ? len : 2) + 1;
}
else
decoded->canonical_option[i] = NULL;
@@ -637,7 +641,14 @@ decode_cmdline_option (const char **argv, unsigned int lang_mask,
{
size_t len = strlen (argv[i]);
- memcpy (p, argv[i], len);
+ /* Print the empty string verbally. */
+ if (len == 0)
+ {
+ *p++ = '"';
+ *p++ = '"';
+ }
+ else
+ memcpy (p, argv[i], len);
p += len;
if (i == result - 1)
*p++ = 0;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f64735e..60e924b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2011-02-23 Jie Zhang <jie@codesourcery.com>
+
+ * gcc.dg/cpp/include7.c: New test.
+
2011-02-22 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/47242
diff --git a/gcc/testsuite/gcc.dg/cpp/include7.c b/gcc/testsuite/gcc.dg/cpp/include7.c
new file mode 100644
index 0000000..0e95601
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/cpp/include7.c
@@ -0,0 +1,3 @@
+/* { dg-do compile } */
+/* { dg-options "-I \"\"" } */
+