This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Projects for beginners


On Wed, Jan 31, 2001 at 06:33:47PM -0500, Daniel Berlin wrote:
> > Optimizer/back end improvements:
> >
> > These require some knowledge of compiler internals and substantial
> > programming skills, but not detailed knowledge of GCC internals.
> > I think.
> 
> Yer, right, i have only lmited knowledg eof gcc internals, and the
> register allocator so far has only taken 1 week, working in my spare time.
> 
> >
> >   Make insn-recog.c use a byte-coded DFA.
> > 	- RTH and I started this back in 1999 but never finished.  I
> > 	may still be able to find the code.
> > 	- Order of 10x size reduction in insn-recog.o, which is huge
> > 	(432K on i386)
> >
> >   Make GCSE (and CSE?) capable of digging inside PARALLELs.
> > 	- Needed for GCSE to do any good at all on i386.
> 
> Wait, it can't?
> Oh, the clobbers.

Actually I would imagine gcse handles clobbers just fine and dandy, since it
uses single_set which strips off the clobbers/uses if there is only one set.
What it doesn't handle is a parallel that has two sets, which on the x86 is for
setting the condition code register.  This probably applies to more phases than
just gcse (look for single_set).  Another place a parallel with 2 sets is used
is for machines that do both the divide and modulus in one step.

> 
> 
> I have the SSA global value numbering dig inside of parallels, but we
> don't do the deletion just yet, because I figured PRE would take care of
> it if we just renumbered the registers.
> 
> >
> >   Teach the combiner to delete no-op moves it generates.
> > 	- Including unrecognizable no-op moves.  You can get things
> > 	like (set (cc0) (cc0)) or (set (pc) (pc)) neither of which is
> > 	a valid insn, but throwing them out would win.  See thread at
> > 	http://gcc.gnu.org/ml/gcc-patches/2000-07/msg00580.html.
> 
> >
> >   Find all the places that simplify RTL and make them use
> >   simplify-rtx.c.
> >
> >   Convert reorg.c to use the flow graph.  Then we can throw away
> >   resource.c.
> > 	- Long term we want reorg folded into the scheduler, but
> > 	that's much harder.
> >
> >   Improve dwarf2out.c.
> > 	- DWARF2 can handle all kinds of heavy optimizations that we'd
> > 	like to do, but our generator doesn't know how just yet.  At
> > 	the very least it'd be nice if -gdwarf-2 -fomit-frame-pointer
> > 	could give you a clean backtrace on all targets.  (This is
> > 	definitely possible.)
> > 	- Need to coordinate with gdb team.
> 
> Until more targets move off of stabs as the default, this won't happen,
> because there is no motivation.

Start moving targets such as Linux from stabs to dwarf-2 would be another
task.

> It's the same reason gdb still scans the prologue the hard way when we
> could just use the info dwarf2 gives us. It's hard to convince people to
> implement it when their target doesn't default to stabs.

-- 
Michael Meissner, Red Hat, Inc.  (GCC group)
PMB 198, 174 Littleton Road #3, Westford, Massachusetts 01886, USA
Work:	  meissner@redhat.com		phone: +1 978-486-9304
Non-work: meissner@spectacle-pond.org	fax:   +1 978-692-4482

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]