[Bug c/23493] New: += operator does now work as expected, I have gdb session saved
communa at ua dot fm
gcc-bugzilla@gcc.gnu.org
Sat Aug 20 15:18:00 GMT 2005
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 communa@ua.fm or service@sn.com.ua. 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
More information about the Gcc-bugs
mailing list