diff options
| author | Renato Golin <renato.golin@linaro.org> | 2014-03-26 14:01:32 +0000 |
|---|---|---|
| committer | Renato Golin <renato.golin@linaro.org> | 2014-03-26 14:01:32 +0000 |
| commit | 93010e687fbac2800f04bfef2f32005179bc0f73 (patch) | |
| tree | ab1259be4cbfb3ea070e1c13e03190d6b64d76f1 /llvm/docs | |
| parent | 6dd7251599724fc308a5d6ae31baaccf3154bc4c (diff) | |
| download | bcm5719-llvm-93010e687fbac2800f04bfef2f32005179bc0f73.tar.gz bcm5719-llvm-93010e687fbac2800f04bfef2f32005179bc0f73.zip | |
Change @llvm.clear_cache default to call rt-lib
After some discussion on IRC, emitting a call to the library function seems
like a better default, since it will move from a compiler internal error to
a linker error, that the user can work around until LLVM is fixed.
I'm also adding a note on the responsibility of the user to confirm that
the cache was cleared on platforms where nothing is done.
llvm-svn: 204806
Diffstat (limited to 'llvm/docs')
| -rw-r--r-- | llvm/docs/LangRef.rst | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/llvm/docs/LangRef.rst b/llvm/docs/LangRef.rst index d18d4ebac90..1a6549a15d6 100644 --- a/llvm/docs/LangRef.rst +++ b/llvm/docs/LangRef.rst @@ -6964,10 +6964,20 @@ Semantics: When directly supported, this intrinsic will either return a call to the appropriate cache clearing system call (usually ``__clear_cache``) when the caches are not unified (ARM, Mips) or just remove the call -altogether when they are (ex. x86_64). - -Targets must implement it directly to have either behaviour, as the -default is to bail with "Not Implemented" message. +altogether when they are (ex. x86_64). Some targets can lower these +directly into special instructions, if they have it. + +The default behaviour is to emit a call to ``__clear_cache``, so in +case a target doesn't support it, the user gets a linker error rather +than a compiler internal error. It also provides a work around to +the user (implement an empty function called ``__clear_cache``) while +LLVM doesn't implement it in the target's back-end. + +Please note that the caller is responsible for ensuring the cache +is actually cleared. This is most important in targets that don't +need to flush the cache directly (ex. x86_64) and could potentially +still execute old instructions while the cache is not cleared. LLVM +will *not* insert nops or busy-wait sequences. Standard C Library Intrinsics ----------------------------- |

