[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.