[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
ooc-960227 & oo2c-1.1.0
Hi.
This update introduces common subexpression elimination to the list of
optimizers. Since it adds about 35% to the compiler's total runtime
(excluding the C compiler, of course) it is only activated when using
the -O option. It isn't perfect yet since the first run doesn't
eliminate all cse; subsequent activations find more of them. Juergen
promised to fix this, though.
The usual bunch of bugfixes is included, too.
-- mva
Fri Feb 28 17:06:01 1997 Michael van Acken <acken@informatik.uni-kl.de>
* backend/ansi-c/Allocate.Mod (AddToGlobal):
Keep in mind that a global live range used in the
backedge operand of a loop gate extends to the end of the loop; it
doesn't end at the beginning of the region like other gate arguments.
Fri Feb 28 12:18:53 1997 Michael Griebling <grieblm@trt.allied.com>
* lib/LRealStr.Mod: Bug fix to avoid hanging on infinite numbers.
Outputs "Infinity" for infinite IEEE numbers and
"NaN' for illegal numbers.
* lib/RealStr.Mod: Bug fix to avoid hanging on infinite numbers.
Outputs "Infinity" for infinite IEEE numbers and
"NaN" for illegal numbers.
* lib/LRealConv.Mod, lib/RealConv.Mod:
Updated Length routines to detect infinite and NaN numbers.
* lib/LowLReal.Mod, lib/LowReal.Mod:
Added IsNaN and IsInfinity query functions.
Mon Feb 24 20:47:17 1997 Michael Griebling <grieblm@trt.allied.com>
* lib/RealMath.Mod: Fixed sinh/cosh bug.
Improved sin/cos accuracy for larger angles.
* lib/LRealMath.Mod: Fixed sinh/cosh bug.
Improved sin/cos accuracy for larger angles.
(was 10 digits for certain angles -- now always 15 digits)
Mon Feb 24 19:56:18 1997 Michael van Acken <acken@informatik.uni-kl.de>
* backend/ansi-c/Allocate.Mod (BuildInterferenceGraph):
Overflow of result table in the first
marking phase wasn't handled properly.
Fri Feb 21 12:05:13 1997 Michael van Acken <acken@informatik.uni-kl.de>
* optimizers/LoopTransformation.Mod:
Made loop invariant code motion more aggressive. It now tries to move
invariant code out of nested guards. This is kind of speculative, but
it has a positive impact on oo2c's execution time. Which hopefully
means it is a Good Thing(tm).
* frontend/Opcode.Mod (MayTrap):
New predicate. Inspects an instruction's opcode to see if
it can trigger a run-time error during execution and for this reason
can't be moved out of a guard without special precautions.
Thu Feb 20 20:05:42 1997 Michael van Acken <acken@informatik.uni-kl.de>
* backend/ansi-c/oo2c.Mod:
Changed the `enhanced optimization' setting to include common
subexpression elimination and repeat some of the cheaper
optimizations.
Thu Feb 20 18:15:11 1997 Juergen Zimmermann <jnzimmer@informatik.uni-kl.de>
* optimizers/ConstPropagation.Mod:
Fixed problem with GSA invariant violation.
Modified "TakenAlternative" to be more precise, if one
alternative is classified CONST(TRUE) and the other BOTTOM.
Wed Feb 19 21:56:00 1997 Juergen Zimmermann <jnzimmer@informatik.uni-kl.de>
* optimizers/ValueNumbering.Mod:
Identified the problem with previous versions:
If two instructions used the same operand, which depends somehow on a
loop, and one of them is calcucated inside, the other outside the
loop, they both were considered as "equal". This is not true, as
the instruction inside the loop may give a different result for each
loop iteration, which does not hold for the outside instruction.
All known problems are fixed for this release, but code must be
cleaned up somehow.