This file contains the structure used for testing the binary
operators.   It should cover the routine exp_binary. 

The following conditions apply to all binary operators and are handled
by common code.  Hence, they're tested once (in the code for PLUS),
and not again.  (Except for the cause-effect tests, some of which must
be tested elsewhere.)



The following conditions need to be tested:

Number of instrumentation probes added at a point:
(Few operator types allow control of this.)
	0
	1
	> 1
	
Nesting depth:
	1	(x op y)
	2
	> 2

Left child 
	requires a temporary.
	Does not require a temporary.

	has tests
	does not have tests.

	has a setter which is the original expression (same nodes).
	has a setter which is a new tree (constructed from original)

	Positioning of child's setter:
		Before the tests.
			Because child uses tempvar.
			Because self uses tempvar.
		After the tests.
			Because child uses tempvar, but it's a reference.
			Because child doesn't use tempvar.

Ditto for right child.

Self has tests
	Yes.
	No.
	

Cause-effect system:
	Effect setter-first (when building our setter)
		(child_uses_temp OR parent_uses_temp OR operator_is_relational)
		AND NOT the temporary is the original variable.

	Effect where_want_our_setter (when returning value)
		any_tests AND NOT temporary is the original variable

Leads to these test cases:
Test case 1:						minus.c
                      child-uses-tempvar  t
                     parent-uses-tempvar  nil
                  operator-is-relational  nil
                            temp-is-orig  nil
                               any-tests  t

                            setter-first  t
                 want-upper-setter-first  t


Test case 2:						plus.c
                      child-uses-tempvar  nil
                     parent-uses-tempvar  t
                  operator-is-relational  nil
                            temp-is-orig  nil
                               any-tests  d/c

                            setter-first  t
                 want-upper-setter-first    ( ? )


Test case 3:						less.c
                      child-uses-tempvar  nil
                     parent-uses-tempvar  nil
                  operator-is-relational  t
                            temp-is-orig  nil
                               any-tests  d/c

                            setter-first  t
                 want-upper-setter-first    ( ? )

