Hello, On Fri, 2013-03-29 at 20:35 +0000, Kiefmann Bernhard wrote: > Dear Ladies and Gentlemen! > > My name is Bernhard Kiefmann and I'm writing my Master's thesis with > the topic "the suitability of the GNU C compiler used in safety-related > areas".
I can imagine that it could be important to differentiate whether the compiler is just used to compile programs that are subject to safety constraints, or whether the compiler is part of the runtime system and is used during runtime (e.g. JIT compilation). > The first problem with this is that I have to check if the > compiler met the requirements of the international standard IEC > 61508:2010. Here I would like to ask you my question as follows: > > 1) What are the rules of the compiler development? Basically: Each patch (i.e. modification of the compiler) is tested using compiler bootsrapping and/or testsuite and then submitted for review. > Are there any diagrams of UML? Because they are a requirement of the standard. Not in the official GCC repository. (at least not that I know of). > 2) Are there activities for the Functional Verification? The testsuite contains test cases with some input (program code) and expected output. There are test cases that check whether a piece of code just compiles, links, runs and produces some expected output or whether certain instructions are generated on particular targets. > 3) What procedures and measures for > - The design and programming guidelines There is a common coding convention. The SW design of the compiler is modified in order to fulfill the needs for new features or improvements. Some data structures and algorithms are carefully designed or picked to meet certain performance criteria (e.g. avoiding n^2 algorithms). > - Dynamic analysis and testing Occasionally developers use additional tools such as GDB, Valgrind etc to identify problematic parts in the compiler. > - Functional testing and black box testing Testsuite (see above). > - Ausfall-/Versagensanalyse I guess you mean failure analysis here. If somebody detects a problem (e.g. compiler crashes or produces wrong machine code and the compiled program crashes) this problem is reported and a reduced test case is derived. After fixing the issue in the compiler the test case is added to the testsuite. > - Performance tests People run various kinds of benchmarks and post the results to the mailing lists etc. > - Modular approach GCC is split into different modules internally, such as language front-ends, SSA tree optimizations/transformations, back-ends etc. > > If you have information here for me I would rather help in assessing > whether the compiler for use in safety-relevant area is suitable. The > second point of my work is concerned with the treatment of releases. > Are you putting any kind of evidences in your source-code and how they > look like? What do you mean by putting evidence into the source code regarding releases? Like associating a release and the source code that was used to make the release? The official GCC is released as source code only. Versions are tracked with SVN branches. See also the bottom of this page: http://gcc.gnu.org/develop.html Hope it helps, Oleg