Oh! You have a toooo complicated way to report bug. Ok, += operator works only one time in my program later this act as simple = I'll send you my saved gdb session. I saved the full session, but only last 5-10 lines are important. If you will have a trouble with undersanding fill free to leave message to [EMAIL PROTECTED] or [EMAIL PROTECTED] If you need my full program - let me know - I'll save it for you. Thank you for my Freedom, Dmytro start gdb session------------------------------- Starting program: /home/project/communa/agitator/agitator ./test.agr ./test.nasm j1 j2 j3 3 ----------------------- dvar dima barra julia kostik 5 ----------------------- Breakpoint 1, oper (sch=59 ';') at agitator.c:80 80 if(retword(buf)) { // LEFT OPERAND `if' structure (gdb) n 84 var = -1; (gdb) 85 for(c = 0; c < locsub; c++) { (gdb) 86 if(iseq(buf, locs[c].name)) { (gdb) 85 for(c = 0; c < locsub; c++) { (gdb) 86 if(iseq(buf, locs[c].name)) { (gdb) 85 for(c = 0; c < locsub; c++) { (gdb) 86 if(iseq(buf, locs[c].name)) { (gdb) 85 for(c = 0; c < locsub; c++) { (gdb) 86 if(iseq(buf, locs[c].name)) { (gdb) 85 for(c = 0; c < locsub; c++) { (gdb) 92 if(var == -1) { // is our var not in `locs', then look at `vars' (gdb) 93 for(c = 0; c < varsub; c++) { (gdb) 94 if(iseq(buf, vars[c].name)) { (gdb) 93 for(c = 0; c < varsub; c++) { (gdb) 94 if(iseq(buf, vars[c].name)) { (gdb) 93 for(c = 0; c < varsub; c++) { (gdb) 94 if(iseq(buf, vars[c].name)) { (gdb) 95 var = c; (gdb) 96 loc = 0; (gdb) 97 break; (gdb) 102 if(var == -1) { // not found (gdb) 109 loper = find_free_ovar(); (gdb) 110 if(loc) { (gdb) 116 setptr = &(vars[var]); // this is for set member resolvation (gdb) 117 ovars[loper].size = types[vars[var].type].size; (gdb) 118 ovars[loper].pos = vars[var].pos; (gdb) 119 ovars[loper].AStype = AS_DATA; (gdb) 124 if(retchar() == '.') { (gdb) 125 if(!retword(buf)) { (gdb) 131 loc = 1; // I reuse loc here as a found flag (gdb) 132 for(c = 0; c < types[setptr->type].varsub; c++) { (gdb) 133 if(iseq(types[setptr->type].vars[c].name, buf)) { (gdb) 134 ovars[loper].pos += types[setptr->type].vars[c].pos; (gdb) p ovars[loper].pos $11 = 3 (gdb) p types[setptr->type].vars[c].pos $12 = 0 (gdb) p ovars[loper].pos + types[setptr->type].vars[c].pos $13 = 3 (gdb) n 135 ovars[loper].size = types[types[setptr->type].vars[c].type].size; (gdb) p ovars[loper].pos $14 = 3 (gdb) n 136 setptr = &(types[setptr->type].vars[c]); // this is for set member resolvation (gdb) 137 loc = 0; (gdb) 132 for(c = 0; c < types[setptr->type].varsub; c++) { (gdb) 133 if(iseq(types[setptr->type].vars[c].name, buf)) { (gdb) 132 for(c = 0; c < types[setptr->type].varsub; c++) { (gdb) 133 if(iseq(types[setptr->type].vars[c].name, buf)) { (gdb) 132 for(c = 0; c < types[setptr->type].varsub; c++) { (gdb) 140 if(loc) { (gdb) 124 if(retchar() == '.') { (gdb) 125 if(!retword(buf)) { (gdb) 131 loc = 1; // I reuse loc here as a found flag (gdb) 132 for(c = 0; c < types[setptr->type].varsub; c++) { (gdb) 133 if(iseq(types[setptr->type].vars[c].name, buf)) { (gdb) 134 ovars[loper].pos += types[setptr->type].vars[c].pos; (gdb) p ovars[loper].pos $15 = 3 (gdb) p ovars[loper].pos + types[setptr->type].vars[c].pos $16 = 3 (gdb) p types[setptr->type].vars[c].pos $17 = 0 (gdb) n 135 ovars[loper].size = types[types[setptr->type].vars[c].type].size; (gdb) p ovars[loper].pos $18 = 0 (gdb) q The program is running. Exit anyway? (y or n) y
-- Summary: += operator does now work as expected, I have gdb session saved Product: gcc Version: 3.3.4 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: communa at ua dot fm CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23493