X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=docs%2FLangRef.rst;h=c08cee1dbd85e6e340a345dd0d25c77d870cee9d;hb=8eec41fc778e99d42172a7f6de76faa43a6d8847;hp=c86309029eb601141cbd0218c098d4b527dad025;hpb=143d46476cdcf5b88b9ee18ebd799e5820a2db0e;p=oota-llvm.git diff --git a/docs/LangRef.rst b/docs/LangRef.rst index c86309029eb..c08cee1dbd8 100644 --- a/docs/LangRef.rst +++ b/docs/LangRef.rst @@ -793,9 +793,6 @@ example: define void @f() alwaysinline optsize { ... } define void @f() optsize { ... } -``address_safety`` - This attribute indicates that the address safety analysis is enabled - for this function. ``alignstack()`` This attribute indicates that, when emitting the prologue and epilogue, the backend should forcibly align the stack pointer. @@ -873,6 +870,15 @@ example: ``setjmp`` is an example of such a function. The compiler disables some optimizations (like tail calls) in the caller of these functions. +``sanitize_address`` + This attribute indicates that AddressSanitizer checks + (dynamic address safety analysis) are enabled for this function. +``sanitize_memory`` + This attribute indicates that MemorySanitizer checks (dynamic detection + of accesses to uninitialized memory) are enabled for this function. +``sanitize_thread`` + This attribute indicates that ThreadSanitizer checks + (dynamic thread safety analysis) are enabled for this function. ``ssp`` This attribute indicates that the function should emit a stack smashing protector. It is in the form of a "canary" --- a random value @@ -914,12 +920,6 @@ example: If a function that has an ``sspstrong`` attribute is inlined into a function that doesn't have an ``sspstrong`` attribute, then the resulting function will have an ``sspstrong`` attribute. -``thread_safety`` - This attribute indicates that the thread safety analysis is enabled - for this function. -``uninitialized_checks`` - This attribute indicates that the checks for uses of uninitialized - memory are enabled. ``uwtable`` This attribute indicates that the ABI being targeted requires that an unwind table entry be produce for this function even if we can @@ -2537,11 +2537,17 @@ guaranteed to be separate for each loop. The loop-level metadata is prefixed with ``llvm.loop``. The loop identifier metadata is implemented using a metadata that refers to -itself as follows: +itself to avoid merging it with any other identifier metadata, e.g., +during module linkage or function inlining. That is, each loop should refer +to their own identification metadata even if they reside in separate functions. +The following example contains loop identifier metadata for two separate loop +constructs: .. code-block:: llvm !0 = metadata !{ metadata !0 } + !1 = metadata !{ metadata !1 } + '``llvm.loop.parallel``' Metadata ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^