comparison src/share/vm/c1/c1_LIR.cpp @ 11004:87a6f2df28e2

8002160: Compilation issue with adlc using latest SunStudio compilers Summary: modify declaration of 'swap' overloading; dodge optimizer bug in c1_LIR.cpp Reviewed-by: kvn, jrose
author drchase
date Mon, 17 Jun 2013 12:35:53 -0400
parents acadb114c818
children b800986664f4
comparison
equal deleted inserted replaced
11003:ac91879aa56f 11004:87a6f2df28e2
199 #ifndef PRODUCT 199 #ifndef PRODUCT
200 void LIR_OprDesc::validate_type() const { 200 void LIR_OprDesc::validate_type() const {
201 201
202 #ifdef ASSERT 202 #ifdef ASSERT
203 if (!is_pointer() && !is_illegal()) { 203 if (!is_pointer() && !is_illegal()) {
204 OprKind kindfield = kind_field(); // Factored out because of compiler bug, see 8002160
204 switch (as_BasicType(type_field())) { 205 switch (as_BasicType(type_field())) {
205 case T_LONG: 206 case T_LONG:
206 assert((kind_field() == cpu_register || kind_field() == stack_value) && 207 assert((kindfield == cpu_register || kindfield == stack_value) &&
207 size_field() == double_size, "must match"); 208 size_field() == double_size, "must match");
208 break; 209 break;
209 case T_FLOAT: 210 case T_FLOAT:
210 // FP return values can be also in CPU registers on ARM and PPC (softfp ABI) 211 // FP return values can be also in CPU registers on ARM and PPC (softfp ABI)
211 assert((kind_field() == fpu_register || kind_field() == stack_value 212 assert((kindfield == fpu_register || kindfield == stack_value
212 ARM_ONLY(|| kind_field() == cpu_register) 213 ARM_ONLY(|| kindfield == cpu_register)
213 PPC_ONLY(|| kind_field() == cpu_register) ) && 214 PPC_ONLY(|| kindfield == cpu_register) ) &&
214 size_field() == single_size, "must match"); 215 size_field() == single_size, "must match");
215 break; 216 break;
216 case T_DOUBLE: 217 case T_DOUBLE:
217 // FP return values can be also in CPU registers on ARM and PPC (softfp ABI) 218 // FP return values can be also in CPU registers on ARM and PPC (softfp ABI)
218 assert((kind_field() == fpu_register || kind_field() == stack_value 219 assert((kindfield == fpu_register || kindfield == stack_value
219 ARM_ONLY(|| kind_field() == cpu_register) 220 ARM_ONLY(|| kindfield == cpu_register)
220 PPC_ONLY(|| kind_field() == cpu_register) ) && 221 PPC_ONLY(|| kindfield == cpu_register) ) &&
221 size_field() == double_size, "must match"); 222 size_field() == double_size, "must match");
222 break; 223 break;
223 case T_BOOLEAN: 224 case T_BOOLEAN:
224 case T_CHAR: 225 case T_CHAR:
225 case T_BYTE: 226 case T_BYTE:
227 case T_INT: 228 case T_INT:
228 case T_ADDRESS: 229 case T_ADDRESS:
229 case T_OBJECT: 230 case T_OBJECT:
230 case T_METADATA: 231 case T_METADATA:
231 case T_ARRAY: 232 case T_ARRAY:
232 assert((kind_field() == cpu_register || kind_field() == stack_value) && 233 assert((kindfield == cpu_register || kindfield == stack_value) &&
233 size_field() == single_size, "must match"); 234 size_field() == single_size, "must match");
234 break; 235 break;
235 236
236 case T_ILLEGAL: 237 case T_ILLEGAL:
237 // XXX TKR also means unknown right now 238 // XXX TKR also means unknown right now