summaryrefslogtreecommitdiffstats
path: root/clang/docs/UsersManual.rst
Commit message (Collapse)AuthorAgeFilesLines
* Update the description of Clang's MSVC compatibility flagsReid Kleckner2016-03-281-24/+13
| | | | llvm-svn: 264651
* Add whole-program vtable optimization feature to Clang.Peter Collingbourne2016-02-241-0/+15
| | | | | | | | | This patch introduces the -fwhole-program-vtables flag, which enables the whole-program vtable optimization feature (D16795) in Clang. Differential Revision: http://reviews.llvm.org/D16821 llvm-svn: 261767
* UsersManual: update clang-cl commandsHans Wennborg2016-02-121-5/+7
| | | | llvm-svn: 260637
* Partial revert of rL260506.Andrey Bokhanko2016-02-111-0/+3
| | | | | | | | After some experiments I discovered that clang doesn't support static initialization of flexible array members in full, so restored this paragraph in "GCC extensions not implemented yet" list. llvm-svn: 260519
* Update of "GCC extensions not implemented yet" in Clang User's ManualAndrey Bokhanko2016-02-111-10/+0
| | | | | | | | | | #pragma weak, global register variables and static initialization of flexible array members are supported now, so they are removed from "GCC extensions not implemented yet" list. Differential Revision: http://reviews.llvm.org/D16851 llvm-svn: 260506
* [MSVC Compat] Only warn for unknown clang-cl argumentsEhsan Akhgari2016-01-251-2/+3
| | | | | | | | | | | | | | | | | Summary: MSVC's driver accepts all unknown arguments but warns about them. clang by default rejects all unknown arguments. This causes issues specifically with build systems such as autoconf which liberally pass things such as $LDFLAGS to the compiler and expect everything to work. This patch teaches clang-cl to ignore unknown driver arguments. Reviewers: rnk Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D16511 llvm-svn: 258720
* Introduce -fsanitize-stats flag.Peter Collingbourne2016-01-161-0/+5
| | | | | | | | | This is part of a new statistics gathering feature for the sanitizers. See clang/docs/SanitizerStats.rst for further info and docs. Differential Revision: http://reviews.llvm.org/D16175 llvm-svn: 257971
* Driver part of debugger tuning.Paul Robinson2015-12-191-1/+19
| | | | | | | | | | | | | | | | Adds driver options named -glldb and -gsce to mean -g plus tuning for lldb and SCE debuggers respectively; the existing -ggdb option does the same for gdb. Existing options -ggdb0, -ggdb1 etc. unpack into -ggdb -g<N>. (There will not be -glldb<N> or -gsce<N> options.) The tuning gets a target-specific default in the driver, and is passed into cc1 with the new -debugger-tuning option. As fallout, fixes where '-gsplit-dwarf -g0' would ignore the -g0 part on Linux. Differential Revision: http://reviews.llvm.org/D15651 llvm-svn: 256104
* Cross-DSO control flow integrity (Clang part).Evgeniy Stepanov2015-12-151-0/+6
| | | | | | | | | | | | | | Clang-side cross-DSO CFI. * Adds a command line flag -f[no-]sanitize-cfi-cross-dso. * Links a runtime library when enabled. * Emits __cfi_slowpath calls is bitset test fails. * Emits extra hash-based bitsets for external CFI checks. * Sets a module flag to enable __cfi_check generation during LTO. This mode does not yet support diagnostics. llvm-svn: 255694
* [clang-cl] Let /W4 map to -Wall -Wextra instead of just -Wall.Nico Weber2015-12-111-1/+1
| | | | | | | | | There's no way to make a flag alias to two flags, so add a /WCL4 flag that maps to the All, Extra diag groups. Fixes PR25563. http://reviews.llvm.org/D15350 llvm-svn: 255382
* [OPENMP] Make -fopenmp to turn on OpenMP support by default, clang partAlexey Bataev2015-12-101-2/+2
| | | | | | | Patch turns on OpenMP support in clang by default after fixing OpenMP buildbots. Differential Revision: http://reviews.llvm.org/D13803 llvm-svn: 255223
* Fix a typo in the clang user manual.Yunzhong Gao2015-12-101-2/+2
| | | | | | -fmax-unknown-pointer-align => -fmax-type-align llvm-svn: 255200
* [Docs] One more cleanup of -fsanitize= section.Alexey Samsonov2015-12-041-17/+14
| | | | | | | Describe -fsanitize-blacklist flags in separate paragraphs, move notes about importance of clang++ for vptr down to UBSan docs. llvm-svn: 254798
* [Docs] Update MSan docsAlexey Samsonov2015-12-041-27/+2
| | | | | | | | | | | | | | Summary: 1. Move MSan-specific flags and features from user manual to MSan page. 2. Update current status / list of supported platforms. Reviewers: eugenis, kcc Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D15246 llvm-svn: 254788
* [Docs] Move the list of CFI schemes down to CFI doc, and update it.Alexey Samsonov2015-12-041-13/+2
| | | | | | | | | | | | | Use proper headling levels in CFI doc. Before that, all sections were considered a subsection of "Introduction". Reviewers: pcc, kcc Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D15237 llvm-svn: 254771
* [Docs] Remove false claim: UBSan can also be combined with TSan/MSan.Alexey Samsonov2015-12-041-2/+1
| | | | llvm-svn: 254734
* Clang documentation for UBSan.Alexey Samsonov2015-12-041-61/+8
| | | | | | | | | | | | | | | | | | | | | | Summary: Create a separate page describing UBSan tool, move the description of fine-grained checks there, provide extra information about supported platforms, symbolization etc. This text is compiled from four parts: * Existing documentation copied from User's Manual * Layout used in documentation for another sanitizers (ASan, MSan etc.) * Text written from scratch * Small parts taken from Michael Morrison's attempt at creating UBSan page: http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20141215/249503.html Reviewers: kcc, rsmith, silvas Subscribers: tberghammer, danalbert, srhines, kcc Differential Revision: http://reviews.llvm.org/D15217 llvm-svn: 254733
* Revert r253582: "clang-cl: Make /W4 imply -Wall -Wextra (PR25563)"Hans Wennborg2015-11-201-1/+1
| | | | | | | | | | The patch expanded the flag *at the end*, breaking invocations like: clang-cl /W4 -Wno-unused-parameter Reverting for now. llvm-svn: 253678
* clang-cl: Make /W4 imply -Wall -Wextra (PR25563)Hans Wennborg2015-11-191-1/+1
| | | | llvm-svn: 253582
* [ASan] Allow -fsanitize-recover=address.Yury Gribov2015-11-111-2/+3
| | | | | | Differential Revision: http://reviews.llvm.org/D14243 llvm-svn: 252721
* Sample Profiles - Fix location of binary encoding documentation. NFC.Diego Novillo2015-10-191-1/+1
| | | | llvm-svn: 250705
* Sample profiles - Update text profile documentation.Diego Novillo2015-10-141-12/+54
| | | | | | | There's been some changes to the text encoding for sample profiles. This updates the documentation and an example. llvm-svn: 250310
* Updating docs for MSan to describe poison-in-dtor.Naomi Musgrave2015-09-171-0/+10
| | | | | | | | | | | | | | | | | | Summary: Describe the compile and runtime flags to enable MemorySanitizer detection of use-after-destroy. Reviewers: eugenis Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D12914 Revise doc description of use-after-dtor. Change wording to specify memory no longer readable. llvm-svn: 247871
* [OPENMP] Info about OpenMP Support in Users Manual, NFC.Alexey Bataev2015-08-241-0/+26
| | | | | | Differential Revision: http://reviews.llvm.org/D12152 llvm-svn: 245823
* Docs: update clang-cl command-line documentationHans Wennborg2015-08-121-22/+59
| | | | llvm-svn: 244794
* Add flags to disable profile generation.Diego Novillo2015-08-051-0/+13
| | | | | | | | | | | | This patch adds flags -fno-profile-instr-generate and -fno-profile-instr-use, and the GCC aliases -fno-profile-generate and -fno-profile-use. These flags are used in situations where users need to disable profile generation or use for specific files in a build, without affecting other files. llvm-svn: 244153
* Grammar: Don't imply that a program wouldn't want a person as its output.Douglas Katzman2015-08-031-2/+2
| | | | | | (Because, hey, who wouldn't?) llvm-svn: 243901
* Add -femulated-tls flag to select the emulated TLS model.Chih-Hung Hsieh2015-07-281-0/+7
| | | | | | | | | This will be used for old targets like Android that do not support ELF TLS models. Differential Revision: http://reviews.llvm.org/D10524 llvm-svn: 243441
* Add GCC-compatible flags -fprofile-generate and -fprofile-use.Diego Novillo2015-07-091-0/+39
| | | | | | | | | | | | | | | | | | This patch adds support for specifying where the profile is emitted in a way similar to GCC. These flags are used to specify directories instead of filenames. When -fprofile-generate=DIR is used, the compiler will generate code to write to <DIR>/default.profraw. The patch also adds a couple of extensions: LLVM_PROFILE_FILE can still be used to override the directory and file name to use and -fprofile-use accepts both directories and filenames. To simplify the set of flags used in the backend, all the flags get canonicalized to -fprofile-instr-{generate,use} when passed to the backend. The decision to use a default name for the profile is done in the driver. llvm-svn: 241825
* [CFI] Require -flto instead of implying it.Alexey Samsonov2015-06-191-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This is unfortunate, but would let us land http://reviews.llvm.org/D10467, that makes ToolChains responsible for computing the set of sanitizers they support. Unfortunately, Darwin ToolChains doesn't know about actual OS they target until ToolChain::TranslateArgs() is called. In particular, it means we won't be able to construct SanitizerArgs for these ToolChains before that. This change removes SanitizerArgs::needsLTO() method, so that now ToolChain::IsUsingLTO(), which is called very early, doesn't need SanitizerArgs to implement this method. Docs and test cases are updated accordingly. See https://llvm.org/bugs/show_bug.cgi?id=23539, which describes why we start all these. Test Plan: regression test suite Reviewers: pcc Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D10560 llvm-svn: 240170
* Implement diagnostic mode for -fsanitize=cfi*, -fsanitize=cfi-diag.Peter Collingbourne2015-06-191-4/+6
| | | | | | | | | | | | | | | | | This causes programs compiled with this flag to print a diagnostic when a control flow integrity check fails instead of aborting. Diagnostics are printed using UBSan's runtime library. The main motivation of this feature over -fsanitize=vptr is fidelity with the -fsanitize=cfi implementation: the diagnostics are printed under exactly the same conditions as those which would cause -fsanitize=cfi to abort the program. This means that the same restrictions apply regarding compiling all translation units with -fsanitize=cfi, cross-DSO virtual calls are forbidden, etc. Differential Revision: http://reviews.llvm.org/D10268 llvm-svn: 240109
* Introduce -fsanitize-trap= flag.Peter Collingbourne2015-06-181-15/+31
| | | | | | | | | | | | | | | | | | | | | | | | This flag controls whether a given sanitizer traps upon detecting an error. It currently only supports UBSan. The existing flag -fsanitize-undefined-trap-on-error has been made an alias of -fsanitize-trap=undefined. This change also cleans up some awkward behavior around the combination of -fsanitize-trap=undefined and -fsanitize=undefined. Previously we would reject command lines containing the combination of these two flags, as -fsanitize=vptr is not compatible with trapping. This required the creation of -fsanitize=undefined-trap, which excluded -fsanitize=vptr (and -fsanitize=function, but this seems like an oversight). Now, -fsanitize=undefined is an alias for -fsanitize=undefined-trap, and if -fsanitize-trap=undefined is specified, we treat -fsanitize=vptr as an "unsupported" flag, which means that we error out if the flag is specified explicitly, but implicitly disable it if the flag was implied by -fsanitize=undefined. Differential Revision: http://reviews.llvm.org/D10464 llvm-svn: 240105
* Protection against stack-based memory corruption errors using SafeStack: ↵Peter Collingbourne2015-06-151-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | Clang command line option and function attribute This patch adds the -fsanitize=safe-stack command line argument for clang, which enables the Safe Stack protection (see http://reviews.llvm.org/D6094 for the detailed description of the Safe Stack). This patch is our implementation of the safe stack on top of Clang. The patches make the following changes: - Add -fsanitize=safe-stack and -fno-sanitize=safe-stack options to clang to control safe stack usage (the safe stack is disabled by default). - Add __attribute__((no_sanitize("safe-stack"))) attribute to clang that can be used to disable the safe stack for individual functions even when enabled globally. Original patch by Volodymyr Kuznetsov and others at the Dependable Systems Lab at EPFL; updates and upstreaming by myself. Differential Revision: http://reviews.llvm.org/D6095 llvm-svn: 239762
* Improve user documentation on profiling.Diego Novillo2015-05-281-14/+57
| | | | | | | | This clarifies the relationship between instrumentation and sampling based PGO, code coverage analysis and the different formats supported by sample profiling. llvm-svn: 238504
* Add clarifying note that sampling-based profiles cannot be used for code ↵Diego Novillo2015-05-221-0/+4
| | | | | | coverage. llvm-svn: 238031
* Implement no_sanitize attribute.Peter Collingbourne2015-05-151-0/+2
| | | | | | Differential Revision: http://reviews.llvm.org/D9631 llvm-svn: 237463
* Update docs for SanitizerCoverage.Alexey Samsonov2015-05-071-0/+5
| | | | llvm-svn: 236793
* Support generating NMake/Jom-style depfiles.Paul Robinson2015-04-271-0/+19
| | | | | | | | | | | | | | | NMake is a Make-like builder that comes with Microsoft Visual Studio. Jom (https://wiki.qt.io/Jom) is an NMake-compatible build tool. Dependency files for NMake/Jom need to use double-quotes to wrap filespecs containing special characters, instead of the backslash escapes that GNU Make wants. Adds the -MV option, which specifies to use double-quotes as needed instead of backslash escapes when writing the dependency file. Differential Revision: http://reviews.llvm.org/D9260 llvm-svn: 235903
* Implement CFI type checks for non-virtual calls.Peter Collingbourne2015-04-021-1/+3
| | | | | | | | | | | | This uses the same class metadata currently used for virtual call and cast checks. The new flag is -fsanitize=cfi-nvcall. For consistency, the -fsanitize=cfi-vptr flag has been renamed -fsanitize=cfi-vcall. Differential Revision: http://reviews.llvm.org/D8756 llvm-svn: 233874
* [UBSan] Don't allow to use UBSan with anything except for ASan.Alexey Samsonov2015-03-201-2/+2
| | | | | | | | | | We are not able to make a reliable solution for using UBSan together with other sanitizers with runtime support (and sanitizer_common). Instead, we want to follow the path used for LSan: have a "standalone" UBSan tool, and plug-in UBSan that would be explicitly embedded into specific sanitizers (in short term, it will be only ASan). llvm-svn: 232829
* Implement bad cast checks using control flow integrity information.Peter Collingbourne2015-03-141-0/+6
| | | | | | | | | | | This scheme checks that pointer and lvalue casts are made to an object of the correct dynamic type; that is, the dynamic type of the object must be a derived class of the pointee type of the cast. The checks are currently only introduced where the class being casted to is a polymorphic class. Differential Revision: http://reviews.llvm.org/D8312 llvm-svn: 232241
* [UBSan] Split -fsanitize=shift into -fsanitize=shift-base and ↵Alexey Samsonov2015-03-091-1/+3
| | | | | | | | | | | | | | | | -fsanitize=shift-exponent. This is a recommit of r231150, reverted in r231409. Turns out that -fsanitize=shift-base check implementation only works if the shift exponent is valid, otherwise it contains undefined behavior itself. Make sure we check that exponent is valid before we proceed to check the base. Make sure that we actually report invalid values of base or exponent if -fsanitize=shift-base or -fsanitize=shift-exponent is specified, respectively. llvm-svn: 231711
* Revert "[UBSan] Split -fsanitize=shift into -fsanitize=shift-base and ↵Alexey Samsonov2015-03-051-3/+1
| | | | | | | | | | | -fsanitize=shift-exponent." It's not that easy. If we're only checking -fsanitize=shift-base we still need to verify that exponent has sane value, otherwise UBSan-inserted checks for base will contain undefined behavior themselves. llvm-svn: 231409
* [UBSan] Split -fsanitize=shift into -fsanitize=shift-base and ↵Alexey Samsonov2015-03-031-1/+3
| | | | | | | | | | | | | | | | | | | | | -fsanitize=shift-exponent. -fsanitize=shift is now a group that includes both these checks, so exisiting users should not be affected. This change introduces two new UBSan kinds that sanitize only left-hand side and right-hand side of shift operation. In practice, invalid exponent value (negative or too large) tends to cause more portability problems, including inconsistencies between different compilers, crashes and inadequeate results on non-x86 architectures etc. That is, -fsanitize=shift-exponent failures should generally be addressed first. As a bonus, this change simplifies CodeGen implementation for emitting left shift (separate checks for base and exponent are now merged by the existing generic logic in EmitCheck()), and LLVM IR for these checks (the number of basic blocks is reduced). llvm-svn: 231150
* [msan] Change track-origins default mode from 1 to 2.Evgeniy Stepanov2015-02-261-4/+5
| | | | | | | | | | | Change -fsanitize-memory-track-origins to be equivalent to -fsanitize-memory-track-origins=2. Track-origins=2 provides a lot more detailed reports at the cost of some additional slowdown (ranging from none to, sometimes, 3x; ~3% average on SPEC2006). llvm-svn: 230644
* Implement Control Flow Integrity for virtual calls.Peter Collingbourne2015-02-201-0/+4
| | | | | | | | | | | | | | | This patch introduces the -fsanitize=cfi-vptr flag, which enables a control flow integrity scheme that checks that virtual calls take place using a vptr of the correct dynamic type. More details in the new docs/ControlFlowIntegrity.rst file. It also introduces the -fsanitize=cfi flag, which is currently a synonym for -fsanitize=cfi-vptr, but will eventually cover all CFI checks implemented in Clang. Differential Revision: http://reviews.llvm.org/D7424 llvm-svn: 230055
* Fix amount of diagnostic classesAlex Denisov2015-02-111-1/+1
| | | | llvm-svn: 228814
* Reimplement -fsanitize-recover family of flags.Alexey Samsonov2015-01-121-4/+11
| | | | | | | | | | | | | | | | | | | | | | | | Introduce the following -fsanitize-recover flags: - -fsanitize-recover=<list>: Enable recovery for selected checks or group of checks. It is forbidden to explicitly list unrecoverable sanitizers here (that is, "address", "unreachable", "return"). - -fno-sanitize-recover=<list>: Disable recovery for selected checks or group of checks. - -f(no-)?sanitize-recover is now a synonym for -f(no-)?sanitize-recover=undefined,integer and will soon be deprecated. These flags are parsed left to right, and mask of "recoverable" sanitizer is updated accordingly, much like what we do for -fsanitize= flags. -fsanitize= and -fsanitize-recover= flag families are independent. CodeGen change: If there is a single UBSan handler function, responsible for implementing multiple checks, which have different recoverable setting, then we emit two handler calls instead of one: the first one for the set of "unrecoverable" checks, another one - for set of "recoverable" checks. If all checks implemented by a handler have the same recoverability setting, then the generated code will be the same. llvm-svn: 225719
* Switch C compilations to C11 by default.Richard Smith2014-10-201-4/+12
| | | | | | | | This is long-since overdue, and matches GCC 5.0. This should also be backwards-compatible, because we already supported all of C11 as an extension in C99 mode. llvm-svn: 220244
* Change -Wbind-to-temporary-copy from an ExtWarn to an Extension.Nico Weber2014-09-181-1/+1
| | | | | | | | | | | | | | | | | The reasoning is that this construct is accepted by all compilers and valid in C++11, so it doesn't seem like a useful warning to have enabled by default. Building with -pedantic, -Wbind-to-temporary-copy, or -Wc++98-compat still shows the warning. The motivation is that I built re2, and this was the only warning that was emitted during the build. Both changing re2 to fix the warning and detecting clang and suppressing the warning in re2's build seem inferior than just giving the compiler a good default for this warning. Also move the cxx98compat version of this warning to CXX98CompatPedantic, and update tests accordingly. llvm-svn: 218008
OpenPOWER on IntegriCloud