Re: Weeding out unwanted include files

nandu@cs.clemson.edu
Fri, 29 Jul 1994 14:16:28 GMT

          From comp.compilers

Related articles
Weeding out unwanted include files sriram@tcs.com (1994-07-28)
Re: Weeding out unwanted include files nandu@cs.clemson.edu (1994-07-29)
Re: Weeding out unwanted include files pzola@us.oracle.com (1994-07-30)
Re: Weeding out unwanted include files bill@amber.ssd.csd.harris.com (1994-08-02)
Re: Weeding out unwanted include files gary@Intrepid.COM (1994-08-02)
Re: Weeding out unwanted include files g9gwaigh@cdf.toronto.edu (1994-08-03)
Re: Weeding out unwanted include files zstern@adobe.com (1994-08-04)
Re: Weeding out unwanted include files steve@cegelecproj.co.uk (1994-08-04)
[9 later articles]
| List of all articles for this month |

Newsgroups: comp.compilers
From: nandu@cs.clemson.edu
Keywords: C, tools
Organization: Compilers Central
References: 94-07-090
Date: Fri, 29 Jul 1994 14:16:28 GMT

!I want to develop a tool that finds out which include files are
!useless, so as to reduce compile time.


Rather than work at the high level of weeding out header files, you could
attempt to only retain those definitions and prototypes from header files
that are required in the program.


The pre-processor can do nothing to solve this problem because identifying
dead declarations involves flow analysis that can only be performed after
the intermediate representation is constructed. It is also hard for the
compiler to tell which header files are totally unnecessary because the
pre-processor would have already expanded it. Another problem arises when
definitions from a header file are never used in the file that includes
the header but are accessed as "extern" variables from another module! For
example, assume a.c and b.c are two source files constituting an
application. If file a.c includes math.h and never uses the enumerated
type fp_pi_type, the compiler would probably weed out the declaration.
But, what if b.c declares a variable as follows?


extern enum fp_pi_type my_fp_pi;


If you construct use-def chains, those chains that lack a definition would
probably trigger your definition-searcher. However, to solve the problem
described above, you probably can not weed out anything until link time.


I don't really see how you can reduce the compilation time. Object code
size, probably, since you will not carry unwanted information. The search
for definitions has to be performed each time a file is compiled since you
never know if any changes result in including some definitions that were
previously not required.


---------------------------------------------------------------------------
Nandakumar Sankaran, G34 Jordan, Comp. Sci. Dept., Clemson Univ. SC 29634
311-8 Old Greenville Hwy. Clemson SC 29631-1651 (803)653-7749
http://www.cs.clemson.edu/~nandu/nandu.html nandu@cs.clemson.edu
--


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.