[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gcc-bugs
Subject:    gcc -save-temps deletes .o files in 3.1
From:       martin leisner <mleisner () eng ! mc ! xerox ! com>
Date:       2002-05-31 16:46:53
[Download RAW message or body]

I have gcc 3.1 on solaris 2.8.

I expected gcc -save-temps to  leave the objects around.

Looking closer, it works in 2.95 and 3.0.3.

In 3.1, it seems to go through the code (in gcc.c)

 4304       case '\t':
  4305       case ' ':
  4306  /* Space or tab ends an argument if one is pending.  */
- 4307  if (arg_going)
  4308    {
- 4309      obstack_1grow (&obstack, 0);
- 4310      string = obstack_finish (&obstack);
- 4311      if (this_is_library_file)
- 4312        string = find_file (string);
- 4313      store_arg (string, delete_this_arg, this_is_output_file);
- 4314      if (this_is_output_file)
- 4315        outfiles[input_file_number] = string;
  4316    }


/* Add one argument to the vector at the end.
   This is done when a space is seen or at the end of the line.
   If DELETE_ALWAYS is nonzero, the arg is a filename
    and the file should be deleted eventually.
   If DELETE_FAILURE is nonzero, the arg is a filename
    and the file should be deleted if this compilation fails.  */

static void
store_arg (arg, delete_always, delete_failure)
     const char *arg;
     int delete_always, delete_failure;
{
  if (argbuf_index + 1 == argbuf_length)
    argbuf
      = (const char **) xrealloc (argbuf,
                                  (argbuf_length *= 2) * sizeof (const
char *));

  argbuf[argbuf_index++] = arg;
  argbuf[argbuf_index] = 0;

  if (delete_always || delete_failure)
    record_temp_file (arg, delete_always, delete_failure);
}

However, in this path the save-temps flag isn't checked

--
Marty Leisner
mleisner@eng.mc.xerox.com



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic