File: lessons_learned.txt

package info (click to toggle)
crystal-facet-uml 1.63.3-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 21,640 kB
  • sloc: ansic: 109,610; xml: 3,085; makefile: 138; sh: 113
file content (46 lines) | stat: -rw-r--r-- 1,450 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/*!
 *  \page cfu-lessons-learned-page crystal-facet-uml lessons learned
 *
 *  \image html crystal_facet_uml.png
 *  \image latex crystal_facet_uml.pdf "" width=3cm
 *
 *  \section cfu-compiler Compiler Anomalies
 *
 *  Compiler optimizations cause strange effects.
 *
 *  \subsection cfu-optimizations Automatic optimizations
 *
 *  Automatic optimizations change the code and then produce warnings.
 *
 *      mut_A + const_B < mut_C
 *
 *  may implicitly be optimized to
 *
 *      (mut_A - mut_C) + const_B < 0
 *
 *  which is a similar expression but differs when looking at overflows.
 *
 *  \subsection cfu-wrong_warnings Wrong warnings from inline functions
 *
 *  Some warnings are simply not correct - for whatever reason, the compiler cannot calculate strlen
 *  but then warns on subsequent wrong positions in memcpy behind an if-condition, for example:
 *
 *      warning: array subscript 18446744073709551549 is above array bounds of ‘char[64]’
 *
 *  Solve this by disabling the warnings by:
 *
 *      #pragma GCC diagnostic ignored "-Warray-bounds"
 *
 *  \section cfu-posix Posix Variants
 *
 *  \subsection Locale-Dependencies
 *
 *  Some functions are locale-dependant:
 *
 *      strtod
 *
 *  parses floating point numbers where the decimal separator is either a dot or a comma.
 *
 *  \section cfu-lessons-learned-apx Appendix
 *  \author Copyright 2024-2025 Andreas Warnke; Email-contact: cfu-at-andreaswarnke-dot-de
 */