]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
More on gcc2.96.
authorwolf <wolf@0785d39b-7218-0410-832d-ea1e28bc413d>
Tue, 15 Oct 2002 21:53:25 +0000 (21:53 +0000)
committerwolf <wolf@0785d39b-7218-0410-832d-ea1e28bc413d>
Tue, 15 Oct 2002 21:53:25 +0000 (21:53 +0000)
git-svn-id: https://svn.dealii.org/trunk@6657 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/doc/faq.html

index 3b9587b3241ca9b57831f642bb43557917425f53..3fc76e6b801d320dc414aea39c778d22b77c247f 100644 (file)
   RedHat from a snapshot somewhere between 2.95 and 3.0; it contained a large
   number of compiler bugs, which have partly been fixed, but too many remain as
   that we were able to make the library work with this compiler until we could
-  get hold of such a system (the main development was done in Germany, which is
-  SuSE country, not Red Hat). Also note that version 2.96 is not an officially
-  released version of gcc. Simply use either gcc 2.95 or 3.X. 
+  get hold of such a system (initially, the main development of
+  <acronym>deal.II</acronym> was done in Germany, which is SuSE country, not
+  Red Hat). Also note that version 2.96 is not an officially 
+  released version of gcc. Simply use either gcc 2.95 or 3.X. Also note that we
+  have reports that gcc 2.96 may miscompile parts of the library, see
+  <a href="http://www.dealii.org/mail/msg00837.html" target="body">this
+  message</a>.
   </p>
 
   <p>
   compiler, so the problem does not exist there any more.
   </p>
   
+  <p>
+  However, there are more problems lurking around the corner: even though we
+  have included patches so that the library can be compiled, presently not all
+  of the examples can. There is at least one problem in the compiler which we
+  could not work around (I reported this to the gcc bug tracking system as
+  c++/616 in October 2000, and it was fixed a few weeks later, but apparently
+  did not make it to Red Hat's version). The problem manifests itself in
+  situations like this:
+  <code>
+    <pre>
+      template <int dim> struct Function {};
+      template <int dim> struct RHS : Function<dim> { RHS() {}; };
+
+      template <int dim> void f () {
+        const RHS<dim> rhs;
+      };
+      template void f<1> ();
+    </pre>
+  </code>
+  Here, the compiler reports
+  <code>
+    <pre>
+      x.cc: In function `void f () [with int dim = 1]':
+      x.cc:7:   instantiated from here
+      x.cc:5: uninitialized const `rhs'
+    </pre>
+  </code>
+  which is clearly bogus since <code>rhs</code> uses the default constructor of
+  the class. Unfortunately, there is no way of working around the bug short of
+  removing the constness of the variable. We did not want to do this, since
+  this changes the semantics of the programs and is promoting bad style which
+  we do not want to do in example programs. Furthermore, since gcc 2.96 is
+  being phased out at the time of this writing, there is no point in doing this
+  any more. Therefore, we advise you to remove the constness of these variables
+  if you are forced to use this compiler and want to use the example programs,
+  and want to test the example programs or use them as the basis for your own
+  project. A better way is to up- or downgrade your compiler, if this is
+  possible for your machine.
+  </p>
+
 
   <a name="windows">
   <h3>Can I use <acronym>deal.II</acronym> on a

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.