Changeset 609
- Timestamp:
- 08/09/10 21:39:13 (14 years ago)
- Files:
-
- branches/dmd-1.x/src/backend/gother.c (modified) (1 diff)
- branches/dmd-1.x/src/win32.mak (modified) (1 diff)
- trunk/src/backend/gother.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/dmd-1.x/src/backend/gother.c
r588 r609 477 477 478 478 elem_debug(d); 479 479 480 480 //printf("\trd: "); WReqn(d); printf("\n"); 481 481 if (d->Eoper == OPasm) /* OPasm elems ruin everything */ 482 482 goto noprop; 483 483 #if 0 484 484 // Runs afoul of Buzilla 4506 485 485 if (OTassign(d->Eoper) && EBIN(d)) // if assignment elem 486 486 #else 487 487 if (OTassign(d->Eoper)) // if assignment elem 488 488 #endif 489 489 { elem *t = Elvalue(d); 490 490 491 491 if (t->Eoper == OPvar) 492 492 { assert(t->EV.sp.Vsym == sv); 493 493 494 494 if (d->Eoper == OPstreq || 495 495 !tyscalar(t->Ety)) 496 496 goto noprop; // not worth bothering with these cases 497 498 if (d->Eoper == OPnegass) 499 goto noprop; // don't bother with this case, either 497 500 498 501 /* Everything must match or we must skip this variable */ 499 502 /* (in case of assigning to overlapping unions, etc.) */ 500 503 if (t->EV.sp.Voffset != noff || 501 504 /* If sizes match, we are ok */ 502 505 size(t->Ety) != nsize && 503 506 !(d->E2->Eoper == OPconst && size(t->Ety) > nsize && !tyfloating(d->E2->Ety))) 504 507 goto noprop; 505 508 } 506 509 else 507 510 { if (unambig) /* unambiguous assignments only */ 508 511 continue; 509 512 goto noprop; 510 513 } 511 514 if (d->Eoper != OPeq) 512 515 goto noprop; 513 516 } 514 517 else /* must be a call elem */ 515 518 { 516 519 if (unambig) branches/dmd-1.x/src/win32.mak
r606 r609 92 92 debug.obj code.obj cg87.obj cgsched.obj ee.obj csymbol.obj \ 93 93 cgcod.obj cod1.obj cod2.obj cod3.obj cod4.obj cod5.obj outbuf.obj \ 94 94 bcomplex.obj iasm.obj ptrntab.obj aa.obj ti_achar.obj md5.obj 95 95 96 96 # from ROOT 97 97 98 98 ROOTOBJS= lstring.obj array.obj gnuc.obj man.obj rmem.obj port.obj root.obj \ 99 99 stringtable.obj dchar.obj response.obj async.obj speller.obj aav.obj 100 100 101 101 OBJS= $(OBJ1) $(OBJ8) $(ROOTOBJS) 102 102 103 103 SRCS= mars.c enum.c struct.c dsymbol.c import.c idgen.c impcnvgen.c utf.h \ 104 104 utf.c entity.c identifier.c mtype.c expression.c optimize.c \ 105 105 template.h template.c lexer.c declaration.c cast.c \ 106 106 cond.h cond.c link.c aggregate.h staticassert.h parse.c statement.c \ 107 107 constfold.c version.h version.c inifile.c iasm.c staticassert.c \ 108 108 module.c scope.c dump.c init.h init.c attrib.h attrib.c opover.c \ 109 109 eh.c toctype.c class.c mangle.c bit.c tocsym.c func.c inline.c \ 110 110 access.c complex_t.h unialpha.c irstate.h irstate.c glue.c msc.c \ 111 111 ph.c tk.c s2ir.c todt.c e2ir.c util.c toobj.c cppmangle.c \ 112 identifier.h parse.h objfile.hscope.h enum.h import.h \112 identifier.h parse.h scope.h enum.h import.h \ 113 113 typinf.c tocvdebug.c toelfdebug.c mars.h module.h mtype.h dsymbol.h \ 114 114 declaration.h lexer.h expression.h statement.h doc.h doc.c \ 115 115 macro.h macro.c hdrgen.h hdrgen.c arraytypes.h \ 116 116 delegatize.c toir.h toir.c interpret.c traits.c builtin.c \ 117 117 clone.c lib.h libomf.c libelf.c libmach.c arrayop.c \ 118 118 aliasthis.h aliasthis.c json.h json.c unittests.c imphint.c 119 119 120 120 # From C++ compiler 121 121 122 122 BACKSRC= $C\cdef.h $C\cc.h $C\oper.h $C\ty.h $C\optabgen.c \ 123 123 $C\global.h $C\parser.h $C\code.h $C\type.h $C\dt.h $C\cgcv.h \ 124 124 $C\el.h $C\iasm.h $C\rtlsym.h $C\html.h \ 125 125 $C\bcomplex.c $C\blockopt.c $C\cg.c $C\cg87.c \ 126 126 $C\cgcod.c $C\cgcs.c $C\cgcv.c $C\cgelem.c $C\cgen.c $C\cgobj.c \ 127 127 $C\cgreg.c $C\var.c \ 128 128 $C\cgsched.c $C\cod1.c $C\cod2.c $C\cod3.c $C\cod4.c $C\cod5.c \ 129 129 $C\code.c $C\symbol.c $C\debug.c $C\dt.c $C\ee.c $C\el.c \ 130 130 $C\evalu8.c $C\go.c $C\gflow.c $C\gdag.c \ 131 131 $C\gother.c $C\glocal.c $C\gloop.c $C\html.c $C\newman.c \ 132 132 $C\nteh.c $C\os.c $C\out.c $C\outbuf.c $C\ptrntab.c $C\rtlsym.c \ trunk/src/backend/gother.c
r588 r609 477 477 478 478 elem_debug(d); 479 479 480 480 //printf("\trd: "); WReqn(d); printf("\n"); 481 481 if (d->Eoper == OPasm) /* OPasm elems ruin everything */ 482 482 goto noprop; 483 483 #if 0 484 484 // Runs afoul of Buzilla 4506 485 485 if (OTassign(d->Eoper) && EBIN(d)) // if assignment elem 486 486 #else 487 487 if (OTassign(d->Eoper)) // if assignment elem 488 488 #endif 489 489 { elem *t = Elvalue(d); 490 490 491 491 if (t->Eoper == OPvar) 492 492 { assert(t->EV.sp.Vsym == sv); 493 493 494 494 if (d->Eoper == OPstreq || 495 495 !tyscalar(t->Ety)) 496 496 goto noprop; // not worth bothering with these cases 497 498 if (d->Eoper == OPnegass) 499 goto noprop; // don't bother with this case, either 497 500 498 501 /* Everything must match or we must skip this variable */ 499 502 /* (in case of assigning to overlapping unions, etc.) */ 500 503 if (t->EV.sp.Voffset != noff || 501 504 /* If sizes match, we are ok */ 502 505 size(t->Ety) != nsize && 503 506 !(d->E2->Eoper == OPconst && size(t->Ety) > nsize && !tyfloating(d->E2->Ety))) 504 507 goto noprop; 505 508 } 506 509 else 507 510 { if (unambig) /* unambiguous assignments only */ 508 511 continue; 509 512 goto noprop; 510 513 } 511 514 if (d->Eoper != OPeq) 512 515 goto noprop; 513 516 } 514 517 else /* must be a call elem */ 515 518 { 516 519 if (unambig)
