Segmentation Fault : Optimizing for the common case

Team members: RongrongZhong (Leader), TivadarPapai (Explosives), KonstantinosMenychtas(Assassin)

Segmentation Fault Manifesto

A spectre is haunting compiler optimizations -- the spectre of Segmentation Fault. All the compiler optimization teams have entered a competition to exorcise this spectre.

It is high time that Segmantion Fault should openly, in the face of the whole world, publish their optimizations, their aims, their tendencies, and meet this nursery tale of the spectre of seg-faulting with a modest manifestation :

  • We intend to optimize for the common case (which programmer has not seg-faulted ? What is more common than that spectre ?)
  • We intend to optimize for speed (what kind of optimization do you expect to have your program finish faster than a seg-fault?)
  • Through irony, self-sarcasm, modesty and true hacking, we shall prevail.

Calendar

  • Meeting 24th March : 17.00 Name, Manifesto, Wiki setup
  • Meeting 25th March : 15.30 Rongrong introduces her source
  • Meeting 26th March : 15.30 Constant propagation discussion (data structures)
  • Meeting 31st March : 15.30 Constant propagation - main part of the code (MODIFY_EXPR)
  • Meeting 1st April : 15.15 Constant propagation - extra cases - RongrongZhong & TivadarPapai introduce "Variable Propagation" to get rid of "a.0 = a" kinda stmts.
  • Meeting 2nd April : 15.15 Constant propagation - handle arrays and stuff, handle call_expr, correct the error in global def-use edges

TODO

  • Global Constant Propagation -> partly works, need to add call_expr into valin, correct the global def-use errors, deal with array refs.
  • Merge the input/output calls
  • Delete those control flow statements with empty bodies
  • Compare with the gimple tree of original Gcc outputs and find other useful optimizations
  • Handle arrays in variable propagation

Results for open benchmarks

I copied the result table here for convenience and I also added my current result for the test cases. If your works happened to have better results, please update it and we can move to your code base.

Benchmarks Gcc O0 Gcc O1 Gcc O2 Gcc O3 Segmentation Fault
automaton 114 81 75 67 114
binrep 78 42 37 36 77
fibonacci 1100 683 709 670 1100
jacobi 13341731 4454405 4453383 4453383 10987550
mandel 6480375 2173100 2173100 1299204 6477411
movingedge 1356 753 696 387 1356
multiply 540 10 10 8 157
sort 11329 7682 7858 7608 10974
sort_insertion 2946 2059 2057 2044 2946
tax 182 105 106 87 176
trivia 85 32 32 32 57

  • Inputs for some benchmarks
automaton 7 1 0 1 1 0 0 -1
binrep 23
movingedge 23
multiply 23
tax 2008 1980 938 1 0 1 797 1
trivia 23
Edit | Attach | Watch | Print version | History: r17 < r16 < r15 < r14 < r13 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r14 - 2008-04-02 - RongrongZhong
 
  • Edit
  • Attach
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding URCS? Send feedback