]> git.gag.com Git - fw/sdcc/blobdiff - doc/sdccman.lyx
more compiler internals
[fw/sdcc] / doc / sdccman.lyx
index 961650e8f032473fbeec97370dbbe620305e408f..895701693d4d5fbe47f98d670c439a964b1e9913 100644 (file)
@@ -1986,12 +1986,20 @@ Will not do loop reversal optimization.
 \layout List
 \labelwidthstring 00.00.0000
 
+---
+\series bold 
+nolabelopt
+\series default 
+ Will not optimize labels (makes the dumpfiles more readable).
+\layout List
+\labelwidthstring 00.00.0000
+
 
 \series bold 
 ---no-xinit-opt
 \series default 
- This will disable the memcpy of initialized data in far space from code
- space
+ Will not memcpy initialized data in far space from code space.
+ This saves a few bytes in code space if you don't have initialized data.
 \layout Subsubsection
 
 Other Options
@@ -2008,6 +2016,15 @@ Other Options
 \labelwidthstring 00.00.0000
 
 
+\series bold 
+--c1mode
+\series default 
+ reads the preprocessed source from standard input and compiles it.
+ The file name for the assembler output must be specified using the -o option.
+\layout List
+\labelwidthstring 00.00.0000
+
+
 \series bold 
 -E
 \series default 
@@ -7674,6 +7691,9 @@ cc@sdcc.sourceforge.net'.
  in locating optimization problems.
 \layout Section
 
+Compiler internals
+\layout Subsection
+
 The anatomy of the compiler
 \layout Standard
 
@@ -8926,10 +8946,53 @@ mov dpl,a
 \SpecialChar ~
 \SpecialChar ~
 ret
-\size default 
+\newline 
+
+\layout Subsection
+
+A few words about basic block successors, predecessors and dominators
+\layout Standard
 
+Successors are basic blocks that might execute after this basic block.
+\newline 
+Predecessors are basic blocks that might execute before reaching this basic
+ block.
+\newline 
+Dominators are basic blocks that WILL execute before reaching this basic
+ block.
 \newline 
 
+\layout Standard
+
+[basic block 1]
+\layout Standard
+
+if (something)
+\layout Standard
+
+[basic block 2]
+\layout Standard
+
+else
+\layout Standard
+
+[basic block 3]
+\layout Standard
+
+[basic block 4]
+\newline 
+
+\layout Standard
+
+a) succList of [BB2] = [BB4], of [BB3] = [BB4], of [BB1] = [BB2,BB3]
+\layout Standard
+
+b) predList of [BB2] = [BB1], of [BB3] = [BB1], of [BB4] = [BB2,BB3]
+\layout Standard
+
+c) domVect of [BB4] = BB1 ...
+ here we are not sure if BB2 or BB3 was executed but we are SURE that BB1
+ was executed.
 \layout Section
 
 Acknowledgments