Hi all,
I have a problem while compiling BGL with gcc 3.1.1 on solaris7 with the -O2
optimizer option.
All is ok with -g (debug) but -O2 produce a crash at runtime
Here is a code that reproduce the problem :
#include
#include
#include <iostream>
#include <string>
using namespace std;
using namespace boost;
struct VertexPropertyTag {
typedef vertex_property_tag kind;
};
typedef property VertexProp;
typedef adjacency_list Graph;
int main(){
Graph graph;
graph_traits<Graph>::vertex_descriptor v1 =
add_vertex(string("s1"),graph);
graph_traits<Graph>::vertex_descriptor v2 =
add_vertex(string("s2"),graph);
add_edge(v1,v2,graph);
graph_traits<Graph>::edge_iterator eIt,eItEnd;
tie(eIt,eItEnd) = edges(graph);
for(;eIt != eItEnd;++eIt){
cout << "->" << *eIt << endl;
}
return 0;
}
With
g++ -Wall -pedantic -fPIC -g -c -o solaris7/gcc3.1/Main.o Main.cc -I.
-I/opt/boost_1.30.2
g++ -fPIC -o solaris7/gcc3.1/testbug.exe solaris7/gcc3.1/Main.o -L
/opt/boost_1.30.2/libs/gcc3.1/release/single-thread -R -Wl,-Bdynamic
Here is the result :
shell> solaris7/gcc3.1/testbug.exe
->(0,1)
It is OK
With
g++ -Wall -pedantic -fPIC -O2 -c -o solaris7/gcc3.1/Main.o Main.cc -I.
-I/opt/boost_1.30.2
g++ -fPIC -o solaris7/gcc3.1/testbug.exe solaris7/gcc3.1/Main.o -L
/opt/boost_1.30.2/libs/gcc3.1/release/single-thread -R -Wl,-Bdynamic
Here is the result :
shell> solaris7/gcc3.1/testbug.exe
->(0,1)
->(0,0)
Bus error (core dumped)
Does anybody already had this ?
Is it a bug in my code, in BGL or in gcc ?
Thanks for the help.
Franck