Autor Thema: Probleme mit GCC  (Gelesen 2478 mal)

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« am: 14. December 2005, 21:19 »
Hm, ich habe folgenden C-Code:
struct Queue {
struct Queue *next;
void *object;
};

typedef struct Queue Queue;

extern inline Queue *queue_insert(Queue *after) {
Queue *nqueue = (Queue *)kalloc(sizeof(Queue));

if(after == 0) {
nqueue->next = nqueue;
}else{
debug_info("test\n");
nqueue->next = after->next;
after->next = nqueue;
}

return nqueue;
}

kalloc() macht das gleiche wie malloc()
debug_info() macht das gleiche wie die libc funktion printf.
Wenn ich jetzt das debug_info() auskommentiere und keinen anderen funktionsaufruf in die else-case einfüge, dann stürtzt mein Kernel ab.
Das Problem liegt offensichtlich an einer GCC Optimierung. Wenn ich -O3 benutze, funktioniert der Code nicht, bei -O1 oder -O2 funktioniert er. Weiß jemand an welcher Optimierung das liegt? Ich würde schon gerne -O3 benutzen^^

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #1 am: 14. December 2005, 22:08 »
Tja, was macht der Assembler code?
*post*

 

Einloggen