Index: osprey/be/cg/tn.h
===================================================================
--- osprey/be/cg/tn.h	(revision 3717)
+++ osprey/be/cg/tn.h	(working copy)
@@ -873,8 +873,39 @@
 
 inline TN *Build_TN_Of_Mtype(TYPE_ID mtype)
 {
-  ISA_REGISTER_CLASS rc = Register_Class_For_Mtype(mtype);
-  return Gen_Register_TN (rc, MTYPE_RegisterSize(mtype) );
+  ISA_REGISTER_CLASS rc;  // register class
+  INT rs;                 // register size
+#ifdef TARG_SL
+  extern void Create_TN_Pair(TN* key, TN* pair);
+#ifdef EMULATE_LONGLONG
+  if (mtype == MTYPE_I8 || mtype == MTYPE_U8) {
+    TYPE_ID new_mtype = (mtype == MTYPE_I8 ? MTYPE_I4 : MTYPE_U4);
+    rc = Register_Class_For_Mtype(new_mtype);
+    rs = MTYPE_RegisterSize(new_mtype);
+    TN *tn1 = Gen_Register_TN (rc, rs);
+    TN *tn2 = Gen_Register_TN (rc, rs);
+    Create_TN_Pair (tn1, tn2);
+    return tn1;
+  }
+#endif
+#ifdef EMULATE_FLOAT_POINT
+  if (mtype == MTYPE_F8) {
+    rc = Register_Class_For_Mtype(MTYPE_U4);
+    rs = MTYPE_RegisterSize(MTYPE_U4);
+    TN *tn1 = Gen_Register_TN (rc, rs);
+    TN *tn2 = Gen_Register_TN (rc, rs);
+    Create_TN_Pair (tn1, tn2);
+    return tn1;
+  } else if (mtype = MTYPE_F4) {
+    rc = Register_Class_For_Mtype(MTYPE_U4);
+    rs = MTYPE_RegisterSize(MTYPE_U4);
+    return Gen_Register_TN (rc, rs);
+  }
+#endif
+#endif
+  rc = Register_Class_For_Mtype(mtype);
+  rs = MTYPE_RegisterSize(mtype);
+  return Gen_Register_TN (rc, rs);
 }
 
 extern	TN *Dup_TN ( TN *tn );	/* Duplicate an existing TN */
Index: osprey/be/cg/whirl2ops.cxx
===================================================================
--- osprey/be/cg/whirl2ops.cxx	(revision 3717)
+++ osprey/be/cg/whirl2ops.cxx	(working copy)
@@ -919,7 +919,6 @@
 
 }
 
-
 /* Create a new result TN for the WHIRL node wn. We pass in the opnd_tn
  * array that contains the TNs allocated for each operand. This could
  * used to do value numbering if desired.
@@ -931,35 +930,11 @@
 Allocate_Result_TN (WN *wn, TN **opnd_tn)
 {
 #ifdef TARG_SL
+  return Build_TN_Of_Mtype(WN_rtype(wn));
+#else
 
 #ifdef EMULATE_LONGLONG
-  TYPE_ID mtype = WN_rtype(wn);
-  if (MTYPE_is_longlong(mtype)) {
-    TYPE_ID new_mtype = (mtype == MTYPE_I8 ? MTYPE_I4 : MTYPE_U4);
-    TN *tn  = Build_TN_Of_Mtype (new_mtype);
-    TN *tn2 = Build_TN_Of_Mtype (new_mtype);
-    Add_TN_Pair (tn, tn2);
-    return tn;
-  }
-#endif
 
-#ifdef EMULATE_FLOAT_POINT
-  if (mtype == MTYPE_F8) {
-    TN *tn   = Build_TN_Of_Mtype(MTYPE_U4);
-    TN *pair = Build_TN_Of_Mtype(MTYPE_U4);
-    Add_TN_Pair (tn, pair);
-    return tn;
-  } else if (mtype = MTYPE_F4) {
-    return Build_TN_Of_Mtype(MTYPE_U4);
-  }
-#endif 
-
-  return Build_TN_Of_Mtype (mtype);
-
-#else // !defined(TARG_SL)
-
-#ifdef EMULATE_LONGLONG
-
   TYPE_ID mtype = WN_rtype(wn);
   if (mtype == MTYPE_I8 || mtype == MTYPE_U8) {
     TYPE_ID new_mtype = (mtype == MTYPE_I8 ? MTYPE_I4 : MTYPE_U4);
@@ -1301,27 +1276,6 @@
       } else {
         tn = Build_TN_Of_Mtype (mtype);
       }
-#elif defined(TARG_SL)
-
-#ifdef EMULATE_LONGLONG
-      if (mtype == MTYPE_I8 || mtype == MTYPE_U8) {
-        mtype = (mtype == MTYPE_I8 ? MTYPE_I4 : MTYPE_U4);
-        tn = Build_TN_Of_Mtype(mtype);
-        Add_TN_Pair(tn, Build_TN_Of_Mtype(mtype));
-      } else 
-#endif      
-
-#ifdef EMULATE_FLOAT_POINT 
-      if (mtype == MTYPE_F8) {
-        TN* pair = Build_TN_Of_Mtype(MTYPE_U4);
-        tn = Build_TN_Of_Mtype(MTYPE_U4);
-        Add_TN_Pair(tn, pair);
-      } else if (mtype == MTYPE_F4) {
-        tn = Build_TN_Of_Mtype(MTYPE_U4);
-      } else       
-#endif
-    	tn = Build_TN_Of_Mtype (mtype);
-
 #else
 #ifdef TARG_X8664
       if( OP_NEED_PAIR(mtype) ){
@@ -2898,9 +2852,9 @@
     // for U8STBITS
     // allocate a larger TN if bit deposit may run out of range
     if(MTYPE_byte_size(rtype) > MTYPE_byte_size(WN_rtype(kid)))
-      field_tn = Build_TN_Of_Mtype (rtype);
+      field_tn = Build_TN_Of_Mtype(rtype);
     else
-      field_tn = Allocate_Result_TN (kid, NULL);
+      field_tn = Allocate_Result_TN(kid, NULL);
     Last_Mem_OP = OPS_last(&New_OPs);
     Exp_Load(rtype, desc, field_tn, WN_st(stbits), WN_load_offset(stbits),
 	     &New_OPs, variant); // must do an unsigned load
@@ -2909,9 +2863,9 @@
     // for U8STBITS
     // allocate a larger TN if bit deposit may run out of range
     if(MTYPE_byte_size(rtype) > MTYPE_byte_size(WN_rtype(kid)))
-      result = Build_TN_Of_Mtype (rtype);
+      result = Build_TN_Of_Mtype(rtype);
     else
-      result = Allocate_Result_TN (kid, NULL);
+      result = Allocate_Result_TN(kid, NULL);
   }
 
 #ifdef TARG_PPC32
@@ -3126,11 +3080,11 @@
   // for U8ISTBITS
   // allocate larger TNs if bit deposit may run out of range
   if(MTYPE_byte_size(rtype) > MTYPE_byte_size(WN_rtype(kid0))) {
-    result = Build_TN_Of_Mtype (rtype);
-    field_tn = Build_TN_Of_Mtype (rtype);
+    result = Build_TN_Of_Mtype(rtype);
+    field_tn = Build_TN_Of_Mtype(rtype);
   }else{
-    result = Allocate_Result_TN (kid0, NULL);
-    field_tn = Allocate_Result_TN (kid0, NULL);
+    result = Allocate_Result_TN(kid0, NULL);
+    field_tn = Allocate_Result_TN(kid0, NULL);
   }
 
   // guard against U1MPY or U2MPY
Index: osprey/be/cg/SL/exp_divrem.cxx
===================================================================
--- osprey/be/cg/SL/exp_divrem.cxx	(revision 3717)
+++ osprey/be/cg/SL/exp_divrem.cxx	(working copy)
@@ -88,24 +88,6 @@
   /* NOTREACHED */
 }
 
-extern void Add_TN_Pair(TN *key, TN *pair);
-
-TN *Build_TN_Of_Mtype_64(TYPE_ID mtype)
-{
-  TN *res;
-  TYPE_ID mtype_t;
-  BOOL is_double = MTYPE_is_size_double(mtype);
-  
-  if (is_double) {
-    mtype_t = (MTYPE_is_signed(mtype) ? MTYPE_I4 : MTYPE_U4);
-    res = Build_TN_Of_Mtype(mtype_t);
-    Add_TN_Pair(res, Build_TN_Of_Mtype(mtype_t));
-  } else {
-    res = Build_TN_Of_Mtype(mtype);
-  }
-  return res;
-}
-
 /* Expand the sequence for division by a power of two. It is the
  * caller's job to verify that divisor is a non-zero power of two.
  */
@@ -125,11 +107,11 @@
   else {
     INT64 absdvsr = dvsr < 0 ? -dvsr : dvsr;
     BOOL is_double = MTYPE_is_size_double(mtype);
-    TN *t1 = Build_TN_Of_Mtype_64(mtype);
-    TN *t2 = Build_TN_Of_Mtype_64(mtype);
-    TN *t3 = Build_TN_Of_Mtype_64(mtype);
-    TN *t4 = Build_TN_Of_Mtype_64(mtype);
-    TN *t5 = (dvsr < 0) ? Build_TN_Of_Mtype_64(mtype) : result;
+    TN *t1 = Build_TN_Of_Mtype(mtype);
+    TN *t2 = Build_TN_Of_Mtype(mtype);
+    TN *t3 = Build_TN_Of_Mtype(mtype);
+    TN *t4 = Build_TN_Of_Mtype(mtype);
+    TN *t5 = (dvsr < 0) ? Build_TN_Of_Mtype(mtype) : result;
 
     Expand_Shift(t1, numer, Gen_Literal_TN(is_double?63:31, 4), mtype, shift_aright, ops);
     Expand_Immediate (t2, Gen_Literal_TN (absdvsr - 1, is_double?8:4), mtype, ops);
@@ -455,7 +437,7 @@
 {
   BOOL is_double = MTYPE_is_size_double(mtype);
   INT n = Get_Power_Of_2(src2_val, mtype);
-  TN *con = Build_TN_Of_Mtype_64(mtype);
+  TN *con = Build_TN_Of_Mtype(mtype);
   Expand_Immediate(con, Gen_Literal_TN((1LL<<n)-1, is_double?8:4), mtype, ops);
 
   Is_True((MTYPE_is_integral(mtype)) ,
@@ -463,8 +445,8 @@
 
 
   if (MTYPE_is_signed(mtype)) {
-    TN *tmp1 = Build_TN_Of_Mtype_64(mtype);
-    TN *tmp2 = Build_TN_Of_Mtype_64(mtype);
+    TN *tmp1 = Build_TN_Of_Mtype(mtype);
+    TN *tmp2 = Build_TN_Of_Mtype(mtype);
 
     // tmp1 = src1 >= 0 ? src1 : -src1;
     Expand_Abs (tmp1, src1, mtype, ops);
@@ -476,8 +458,8 @@
     // result = (src1 >= 0) ? tmp2 : -tmp2;
     int unsignedflag = !MTYPE_is_signed(mtype);
     if (is_double) {
-       TN *cond_tn = Build_TN_Of_Mtype_64(MTYPE_I4);
-       TN *tmp3 = Build_TN_Of_Mtype_64(mtype);
+       TN *cond_tn = Build_TN_Of_Mtype(MTYPE_I4);
+       TN *tmp3 = Build_TN_Of_Mtype(mtype);
        
        extern void Expand_Int_Greater_Equal (TN *dest, TN *src1, TN *src2, TYPE_ID mtype, OPS *ops);
        Expand_Int_Greater_Equal(cond_tn, src1, Zero_TN, mtype, ops);
@@ -513,16 +495,16 @@
   BOOL is_double = MTYPE_is_size_double(mtype);
   INT64 absval = src2_val < 0 ? -src2_val : src2_val;
   INT	n      = Get_Power_Of_2(absval, mtype);
-  TN *con = Build_TN_Of_Mtype_64(mtype);
+  TN *con = Build_TN_Of_Mtype(mtype);
   Expand_Immediate(con, Gen_Literal_TN((1LL<<n)-1, is_double?8:4), mtype, ops);
 
   if (MTYPE_is_signed(mtype) && src2_val < 0) {
     TN *tmp1, *tmp2;
 
-    tmp1 = Build_TN_Of_Mtype_64(mtype);
+    tmp1 = Build_TN_Of_Mtype(mtype);
     Expand_Neg(tmp1, src1, mtype, ops);
 
-    tmp2 = Build_TN_Of_Mtype_64(mtype);
+    tmp2 = Build_TN_Of_Mtype(mtype);
     Expand_Binary_And(tmp2, tmp1, con, mtype, ops);
 
     Expand_Neg(result, tmp2, mtype, ops);
