@@ -1748,43 +1748,62 @@ void goto_instrument_parse_optionst::help()
1748
1748
" Usage: Purpose:\n "
1749
1749
" \n "
1750
1750
" goto-instrument [-?] [-h] [--help] show help\n "
1751
- " goto-instrument in out perform instrumentation\n "
1752
- " \n "
1753
- " Main options:\n "
1754
- HELP_DOCUMENT_PROPERTIES
1755
- " --dot generate CFG graph in DOT format\n "
1756
- " --interpreter do concrete execution\n "
1751
+ " goto-instrument --version show version and exit\n "
1752
+ " goto-instrument [options] in [out] perform analysis or instrumentation\n "
1757
1753
" \n "
1758
1754
" Dump Source:\n "
1759
1755
HELP_DUMP_C
1756
+ " --horn print program as constrained horn clauses\n "
1760
1757
" \n "
1761
1758
" Diagnosis:\n "
1762
1759
HELP_SHOW_PROPERTIES
1760
+ HELP_DOCUMENT_PROPERTIES
1763
1761
" --show-symbol-table show loaded symbol table\n "
1764
1762
" --list-symbols list symbols with type information\n "
1765
1763
HELP_SHOW_GOTO_FUNCTIONS
1766
1764
HELP_GOTO_PROGRAM_STATS
1767
- " --drop-unused-functions drop functions trivially unreachable from main function\n " // NOLINT(*)
1765
+ " --show-locations show all source locations\n "
1766
+ " --dot generate CFG graph in DOT format\n "
1768
1767
" --print-internal-representation\n " // NOLINTNEXTLINE(*)
1769
1768
" show verbose internal representation of the program\n "
1770
1769
" --list-undefined-functions list functions without body\n "
1771
- " --show-struct-alignment show struct members that might be concurrently accessed\n " // NOLINT(*)
1772
- " --show-natural-loops show natural loop heads\n "
1773
1770
// NOLINTNEXTLINE(whitespace/line_length)
1774
1771
" --list-calls-args list all function calls with their arguments\n "
1775
1772
" --call-graph show graph of function calls\n "
1776
1773
// NOLINTNEXTLINE(whitespace/line_length)
1777
1774
" --reachable-call-graph show graph of function calls potentially reachable from main function\n "
1778
1775
HELP_SHOW_CLASS_HIERARCHY
1776
+ HELP_VALIDATE
1777
+ // NOLINTNEXTLINE(whitespace/line_length)
1778
+ " --validate-goto-binary check the well-formedness of the passed in goto\n "
1779
+ " binary and then exit\n "
1780
+ " --interpreter do concrete execution\n "
1781
+ " \n "
1782
+ " Data-flow analyses:\n "
1783
+ " --show-struct-alignment show struct members that might be concurrently accessed\n " // NOLINT(*)
1779
1784
// NOLINTNEXTLINE(whitespace/line_length)
1780
1785
" --show-threaded show instructions that may be executed by more than one thread\n "
1781
1786
" --show-local-safe-pointers show pointer expressions that are trivially dominated by a not-null check\n " // NOLINT(*)
1782
1787
" --show-safe-dereferences show pointer expressions that are trivially dominated by a not-null check\n " // NOLINT(*)
1783
1788
" *and* used as a dereference operand\n " // NOLINT(*)
1784
- HELP_VALIDATE
1785
- // NOLINTNEXTLINE(whitespace/line_length)
1786
- " --validate-goto-binary check the well-formedness of the passed in goto\n "
1787
- " binary and then exit\n "
1789
+ " --show-value-sets show points-to information (using value sets)\n " // NOLINT(*)
1790
+ " --show-global-may-alias show may-alias information over globals\n "
1791
+ " --show-local-bitvector-analysis\n "
1792
+ " show procedure-local pointer analysis\n "
1793
+ " --escape-analysis perform escape analysis\n "
1794
+ " --show-escape-analysis show results of escape analysis\n "
1795
+ " --custom-bitvector-analysis perform configurable bitvector analysis\n "
1796
+ " --show-custom-bitvector-analysis\n "
1797
+ " show results of configurable bitvector analysis\n " // NOLINT(*)
1798
+ " --interval-analysis perform interval analysis\n "
1799
+ " --show-intervals show results of interval analysis\n "
1800
+ " --show-uninitialized show maybe-uninitialized variables\n "
1801
+ " --show-points-to show points-to information\n "
1802
+ " --show-rw-set show read-write sets\n "
1803
+ " --show-call-sequences show function call sequences\n "
1804
+ " --show-reaching-definitions show reaching definitions\n "
1805
+ " --show-dependence-graph show program-dependence graph\n "
1806
+ " --show-sese-regions show single-entry-single-exit regions\n "
1788
1807
" \n "
1789
1808
" Safety checks:\n "
1790
1809
" --no-assertions ignore user assertions\n "
@@ -1795,33 +1814,66 @@ void goto_instrument_parse_optionst::help()
1795
1814
" \n "
1796
1815
" Semantic transformations:\n "
1797
1816
<< HELP_NONDET_VOLATILE <<
1798
- HELP_UNWINDSET
1799
- " --unwindset-file <file> read unwindset from file\n "
1800
- " --partial-loops permit paths with partial loops\n "
1801
- " --unwinding-assertions generate unwinding assertions\n "
1802
- " --continue-as-loops add loop for remaining iterations after unwound part\n " // NOLINT(*)
1803
1817
" --isr <function> instruments an interrupt service routine\n "
1804
1818
" --mmio instruments memory-mapped I/O\n "
1805
1819
" --nondet-static add nondeterministic initialization of variables with static lifetime\n " // NOLINT(*)
1806
1820
" --nondet-static-exclude e same as nondet-static except for the variable e\n " // NOLINT(*)
1807
1821
" (use multiple times if required)\n "
1808
1822
" --check-invariant function instruments invariant checking function\n "
1809
- HELP_REMOVE_POINTERS
1823
+ " --function-enter <f>, --function-exit <f>, --branch <f>\n "
1824
+ " instruments a call to <f> at the beginning,\n " // NOLINT(*)
1825
+ " the exit, or a branch point, respectively\n "
1810
1826
" --splice-call caller,callee prepends a call to callee in the body of caller\n " // NOLINT(*)
1827
+ " --check-call-sequence <seq> instruments checks to assert that all call\n "
1828
+ " sequences match <seq>\n "
1811
1829
" --undefined-function-is-assume-false\n "
1812
1830
// NOLINTNEXTLINE(whitespace/line_length)
1813
1831
" convert each call to an undefined function to assume(false)\n "
1814
1832
HELP_INSERT_FINAL_ASSERT_FALSE
1815
1833
HELP_REPLACE_FUNCTION_BODY
1834
+ HELP_RESTRICT_FUNCTION_POINTER
1835
+ HELP_REMOVE_CALLS_NO_BODY
1836
+ " --add-library add models of C library functions\n "
1837
+ HELP_CONFIG_LIBRARY
1838
+ " --model-argc-argv <n> model up to <n> command line arguments\n "
1839
+ // NOLINTNEXTLINE(whitespace/line_length)
1840
+ " --remove-function-body <f> remove the implementation of function <f> (may be repeated)\n "
1841
+ HELP_REPLACE_CALLS
1816
1842
HELP_ANSI_C_LANGUAGE
1817
1843
" \n "
1818
- " Loop transformations:\n "
1844
+ " Semantics-preserving transformations:\n "
1845
+ " --ensure-one-backedge-per-target\n "
1846
+ " transform loop bodies such that there is a\n "
1847
+ " single edge back to the loop head\n "
1848
+ " --drop-unused-functions drop functions trivially unreachable from main function\n " // NOLINT(*)
1849
+ HELP_REMOVE_POINTERS
1850
+ " --constant-propagator propagate constants and simplify expressions\n " // NOLINT(*)
1851
+ " --inline perform full inlining\n "
1852
+ " --partial-inline perform partial inlining\n "
1853
+ " --function-inline <function> transitively inline all calls <function> makes\n " // NOLINT(*)
1854
+ " --no-caching disable caching of intermediate results during transitive function inlining\n " // NOLINT(*)
1855
+ " --log <file> log in json format which code segments were inlined, use with --function-inline\n " // NOLINT(*)
1856
+ " --remove-function-pointers replace function pointers by case statement over function calls\n " // NOLINT(*)
1857
+ HELP_REMOVE_CONST_FUNCTION_POINTERS
1858
+ " --value-set-fi-fp-removal build flow-insensitive value set and replace function pointers by a case statement\n " // NOLINT(*)
1859
+ " over the possible assignments. If the set of possible assignments is empty the function pointer\n " // NOLINT(*)
1860
+ " is removed using the standard remove-function-pointers pass. \n " // NOLINT(*)
1861
+ " \n "
1862
+ " Loop information and transformations:\n "
1863
+ HELP_UNWINDSET
1864
+ " --unwindset-file <file> read unwindset from file\n "
1865
+ " --partial-loops permit paths with partial loops\n "
1866
+ " --unwinding-assertions generate unwinding assertions\n "
1867
+ " --continue-as-loops add loop for remaining iterations after unwound part\n " // NOLINT(*)
1819
1868
" --k-induction <k> check loops with k-induction\n "
1820
1869
" --step-case k-induction: do step-case\n "
1821
1870
" --base-case k-induction: do base-case\n "
1822
1871
" --havoc-loops over-approximate all loops\n "
1823
1872
" --accelerate add loop accelerators\n "
1873
+ " --z3 use Z3 when computing loop accelerators\n "
1824
1874
" --skip-loops <loop-ids> add gotos to skip selected loops during execution\n " // NOLINT(*)
1875
+ " --show-lexical-loops show single-entry-single-back-edge loops\n "
1876
+ " --show-natural-loops show natural loop heads\n "
1825
1877
" \n "
1826
1878
" Memory model instrumentations:\n "
1827
1879
HELP_WMM_FULL
@@ -1838,43 +1890,22 @@ void goto_instrument_parse_optionst::help()
1838
1890
" of the functions on the shortest path\n "
1839
1891
" --aggressive-slice-preserve-function <f>\n "
1840
1892
" force the aggressive slicer to preserve function <f>\n " // NOLINT(*)
1841
- " --aggressive-slice-preserve-function containing <f>\n "
1893
+ " --aggressive-slice-preserve-functions- containing <f>\n "
1842
1894
" force the aggressive slicer to preserve all functions with names containing <f>\n " // NOLINT(*)
1843
- " --aggressive-slice-preserve-all-direct-paths \n "
1895
+ " --aggressive-slice-preserve-all-direct-paths \n "
1844
1896
" force aggressive slicer to preserve all direct paths\n " // NOLINT(*)
1845
1897
" \n "
1846
- " Further transformations:\n "
1847
- " --constant-propagator propagate constants and simplify expressions\n " // NOLINT(*)
1848
- " --inline perform full inlining\n "
1849
- " --partial-inline perform partial inlining\n "
1850
- " --function-inline <function> transitively inline all calls <function> makes\n " // NOLINT(*)
1851
- " --no-caching disable caching of intermediate results during transitive function inlining\n " // NOLINT(*)
1852
- " --log <file> log in json format which code segments were inlined, use with --function-inline\n " // NOLINT(*)
1853
- " --remove-function-pointers replace function pointers by case statement over function calls\n " // NOLINT(*)
1854
- " --value-set-fi-fp-removal build flow-insensitive value set and replace function pointers by a case statement\n " // NOLINT(*)
1855
- " over the possible assignments. If the set of possible assignments is empty the function pointer\n " // NOLINT(*)
1856
- " is removed using the standard remove-function-pointers pass. \n " // NOLINT(*)
1857
- HELP_RESTRICT_FUNCTION_POINTER
1858
- HELP_REMOVE_CALLS_NO_BODY
1859
- HELP_REMOVE_CONST_FUNCTION_POINTERS
1860
- " --add-library add models of C library functions\n "
1861
- HELP_CONFIG_LIBRARY
1862
- " --model-argc-argv <n> model up to <n> command line arguments\n "
1863
- // NOLINTNEXTLINE(whitespace/line_length)
1864
- " --remove-function-body <f> remove the implementation of function <f> (may be repeated)\n "
1865
- HELP_REPLACE_CALLS
1866
- " \n "
1867
1898
" Code contracts:\n "
1868
1899
HELP_LOOP_CONTRACTS
1869
1900
HELP_REPLACE_CALL
1870
1901
HELP_ENFORCE_CONTRACT
1871
1902
" \n "
1872
- " Other options:\n "
1873
- " --version show version and exit\n "
1903
+ " User-interface options:\n "
1874
1904
HELP_FLUSH
1875
1905
" --xml output files in XML where supported\n "
1876
1906
" --xml-ui use XML-formatted output\n "
1877
1907
" --json-ui use JSON-formatted output\n "
1908
+ " --verbosity # verbosity level\n "
1878
1909
HELP_TIMESTAMP
1879
1910
" \n " ;
1880
1911
// clang-format on
0 commit comments