- Replace "Please feel free to add..." with professional contributor
guidance
- Replace "Well, this is not quite true..." aside with a clear note
about -Onone behavior
- Fix "When using swift LLDB REPL" to "When using the Swift REPL"
- Rewrite first-person informal narration in the LSAN section to
objective voice
Convert all 4-space-indented code blocks to fenced code blocks with
appropriate language tags:
- ```sh for shell commands
- ```lldb for LLDB sessions
- ```vim for vim configuration
- Plain ``` for output/logs and other content
This improves readability and enables syntax highlighting in
Markdown renderers.
- Add ### prefix to bare "Build inside the Container" text
- Standardize heading capitalization to Title Case
- Standardize double-backtick flags to single-backtick to match
the rest of the document
Fix mechanical typos and copy-paste errors throughout the document. E.x.:
- "we know to ignore swift_getGenericMetadata" → "we know to ignore
`GlobalARCOpts::run`" (copy-paste error; the example is about
GlobalARCOpts::run)
- "could the copy" → "could then copy"
- "Manually symbolication" → "Manual symbolication"
- "E.x."/"e.x." → "e.g." (standard abbreviation)
The option can be used to save the SIL after optimizations to a file.
In contrast to `-emit-sil`, the compiler doesn't stop an continues to e.g. create the regular output object file
Just had to do this recently and realized I had forgotten how to do it. Placing
it in DebuggingTheCompiler.md so I can look it up from here again after I forget
how to do it again.
I am adding this since I had to go spelunking around to find the SIMCTL_CHILD_
prefix which I need to debug an app. Rather than just forgetting it again, I
thought it made sense to just document it here so I can forget it again. I also
put in a little bit of other stuff about simctl as well while I was here.
* Use fancy arrows (`→`) because they are distinct from and shorter than `->`,
and fancier.
* We have two ways of demarcating locators: `@ <locator>` and `[[<locator>]];`.
Stick to the first, which is shorter and clearer.
* 'attempting type variable' → 'attempting binding'. *Bindings* are attempted,
not type variables.
* `considering ->` → `considering:`. I think a colon is semantically more fit
and makes things easier to read if the considered constraint has arrows in its
description or types. It’s also shorter this way.
* Add the possibility to bisect the individual transforms of SILCombine and SimplifyCFG.
To do so, the `-sil-opt-pass-count` option now accepts the format `<n>.<m>`, where `m` is the sub-pass number.
The sub-pass number limits the number of individual transforms in SILCombine or SimplifyCFG.
* Add an option `-sil-print-last` to print the SIL of the currently optimized function before and after the last pass, which is specified with `-sil-opt-pass-count`.
- If any of the `-g<kind>` flag is given -- except `-gnone`, debug
info will be printed into every generated SIL files.
- The `-gsil` is deprecated in favor of `-sil-based-debuginfo`. The
SILDebugInfoGenerator Pass now generates intermediate SIL file with
name "<output file>.sil_dbg_<n>.sil". Other functionalities of that
Pass remain the same.
* rename -sil-print-only-function to -sil-print-function and -sil-print-only-functions to -sil-print-functions
* to print single functions, don't require -Xllvm -sil-print-all. It's now sufficient to use e.g. -Xllvm -sil-print-function=<f>
But it's still possible to select functions with -sil-print-function(s) for other print options, -sil-print-after.