Opened 13 years ago

Closed 13 years ago

Last modified 13 years ago

#29156 closed submission (fixed)

dragonegg-gcc45 package

Reported by: howarth@… Owned by: macports-tickets@…
Priority: Normal Milestone:
Component: ports Version: 1.9.2
Keywords: lang Cc: mww@…, ryandesign (Ryan Carsten Schmidt)
Port: dragonegg-gcc45

Description

The attached packaging builds the dragonegg trunk svn plugin. The dragonegg 2.9 release is missing changes required to build on case-insensitive file systems like HFS. Thus the packaging uses svn to build dragonegg trunk which also contains a number of other recent fixes for the -fplugin-arg-dragonegg-enable-gcc-optzns which provides additional optimizations from the FSF gcc front end. A patch is applied to allow dragon egg turnk svn to build against llvm 2.9. Also a number of wrappers are installed to provide easy access to the dragonegg plugin. These are currently named de-gcc45, etc.

Attachments (2)

dragonegg_llvm29_compat.diff (1.5 KB) - added by howarth@… 13 years ago.
patch for llvm 2.9 compatibility for dragonegg trunk svn
Portfile (2.9 KB) - added by howarth@… 13 years ago.
revised Portfile

Download all attachments as: .zip

Change History (8)

Changed 13 years ago by howarth@…

patch for llvm 2.9 compatibility for dragonegg trunk svn

comment:1 Changed 13 years ago by howarth@…

Note that this package requires the new gcc45 packaging from #29154 in order to build. The current gcc45 package doesn't install a necessary plugin header due to a known upstream defect in FSF gcc.

comment:2 Changed 13 years ago by howarth@…

A few other notes. The stock usage of dragonegg is very stable with no known bugs. The resulting code will be somewhat (10-20%) slower than FSF gcc 4.5 on average due to the fact that the optimizations aren't applied in the gcc front end. The -fplugin-arg-dragonegg-enable-gcc-optzns option can be used to enable these front end optimizations to the generated GIMPLE but isn't fully debugged yet. However, the performance can be faster than even FSF gcc 4.6.0 under FSF gcc 4.5.2. For example, the himenoBMTxpa benchmark with -fomit-frame-pointer -O3 -ffast-math -funroll-loops shows...

compiler                             MFLOPS
clang 2.9                           230.529385
gcc 4.5.3                          246.064891
de-gcc 4.5.3                     204.845864
de-gcc 4.5.3 optzns          259.672855
gcc 4.6.0                           260.344783

The interactions between the optimizers are quite complex. Currently for this benchmark, the best results are from just...

de-gcc45 -fomit-frame-pointer -O2 -fplugin-arg-dragonegg-enable-gcc-optzns   276.676232

which is significantly faster than the latest FSF gcc release.

comment:3 Changed 13 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: mww@… ryandesign@… added

You can drop the line

depends_run             port:gcc45 port:llvm

since you already have the line

depends_lib             port:gcc45 port:llvm

which implies it.

You should drop the revision line since the initial revision of any given version of a port should be 0 not 1.

Do you expect to be making additional versions of this port, for other versions of gcc? (gcc46, gcc44, etc.)

comment:4 Changed 13 years ago by howarth@…

Currently dragonegg can only be built under gcc 4.5.x. since the gcc plugin feature was only introduced in FSF gcc 4.5.0. Current dragon egg trunk svn hasn't been ported to build under gcc 4.6.x and there is no timeline yet for that feature. My own emphasis has been to push for fixing -fplugin-arg-dragonegg-enable-gcc-optzns related bugs first.

Changed 13 years ago by howarth@…

Attachment: Portfile added

revised Portfile

comment:5 Changed 13 years ago by Veence (Vincent)

Resolution: fixed
Status: newclosed

Done in r82192.

comment:6 Changed 13 years ago by Veence (Vincent)

Oops. Not r82192, but r82164.

Note: See TracTickets for help on using tickets.