X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=docs%2FLangRef.html;h=7ee1418f31637dcaf3a8f1220799d853913aa0db;hb=ebd7eabca4c090175b71f221e880f8bd937a4523;hp=ef58b988172d8b2ed089de325f88f8a81d5a3dfb;hpb=27db99fcee85939f0b7580ad55303c4c60a3b98d;p=oota-llvm.git diff --git a/docs/LangRef.html b/docs/LangRef.html index ef58b988172..7ee1418f316 100644 --- a/docs/LangRef.html +++ b/docs/LangRef.html @@ -25,7 +25,6 @@
If both keywords appear the 'sideeffect' keyword must come - first.
+Inline asms also support using non-standard assembly dialects. The assumed + dialect is ATT. When the 'inteldialect' keyword is present, the + inline asm is using the Intel dialect. Currently, ATT and Intel are the + only supported dialects. An example is:
+ ++call void asm inteldialect "eieio", ""() ++ +
If multiple keywords appear the 'sideeffect' keyword must come + first, the 'alignstack' keyword second and the + 'inteldialect' keyword last.
+The llvm.memcpy is often used to implement +aggregate assignment operations in C and similar languages, however it is +defined to copy a contiguous region of memory, which is more than strictly +necessary for aggregate types which contain holes due to padding. Also, it +doesn't contain any TBAA information about the fields of the aggregate.
+ +!tbaa.struct metadata can describe which memory subregions in a memcpy +are padding and what the TBAA tags of the struct are.
+ +The current metadata format is very simple. !tbaa.struct metadata nodes + are a list of operands which are in conceptual groups of three. For each + group of three, the first operand gives the byte offset of a field in bytes, + the second gives its size in bytes, and the third gives its + tbaa tag. e.g.:
+ ++!4 = metadata !{ i64 0, i64 4, metadata !1, i64 8, i64 4, metadata !2 } ++
This describes a struct with two fields. The first is at offset 0 bytes + with size 4 bytes, and has tbaa tag !1. The second is at offset 8 bytes + and has size 4 bytes and has tbaa tag !2.
+ +Note that the fields need not be contiguous. In this example, there is a + 4 byte gap between the two fields. This gap represents padding which + does not carry useful data and need not be preserved.
+ +