• Home
  • Raw
  • Download

Lines Matching +full:sometimes +full:- +full:uninitialized

27 -----------------------------------------------
35 .. code-block:: c++
39 X = &Foo->F;
49 .. code-block:: c++
53 Sometimes this question gets rephrased as:
66 .. code-block:: c++
88 .. code-block:: llvm
108 .. code-block:: llvm
110 %MyVar = uninitialized global i32
119 .. code-block:: c++
138 ----------------------------------
145 .. code-block:: llvm
147 %MyStruct = uninitialized global { float*, i32 }
173 ----------------------------
181 .. code-block:: llvm
183 %MyVar = uninitialized global { [40 x i32 ]* }
198 .. code-block:: llvm
207 .. code-block:: llvm
209 %MyVar = uninitialized global { [40 x i32 ] }
218 ----------------------------------------
226 .. code-block:: llvm
236 value is equivalent to ``MyVar + 40`` because it indexes past the ten 4-byte
241 -------------------------------------
249 .. code-block:: llvm
260 -----------------------------------
267 -------------------------------------------
273 ---------------------------------------------------------------------
281 support 64-bit arithmetic in most cases. However, there are some cases where it
286 dereference it. IR producers (front-ends) must follow this rule, and consumers
297 -----------------------------------------------------------------------------------------
299 You don't. The integer computation implied by a GEP is target-independent.
300 Typically what you'll need to do is make your backend pattern-match expressions
304 GEP does use target-dependent parameters for the size and layout of data types,
312 ---------------------------------------
319 ``X[a*m+b*n+c]``, so that it appears to the GEP as a single-dimensional array
323 you want to support VLAs, your code will have to be prepared to reverse-engineer
325 library, which always presents VLA and non-VLA indexing in the same manner.
333 ------------------------------------------------
347 the size of the array element, not the number of elements. Note that zero-sized
351 designed to describe low-level pointer arithmetic overflow conditions, rather
352 than high-level array indexing rules.
362 one-past-the-end.
365 out-of-bounds addresses. Obviously, performing a load or a store requires an
370 ------------------------------
375 --------------------------------------------
378 one-past-the-end, you'll get the comparison result you expect. If either is
383 ----------------------------------------------------------------------------------
396 -------------------------------------------------------------
403 value --- zero --- and you can add whatever value you want to it.
405 However, it's invalid to access (load from or store to) an LLVM-aware object
415 ---------------------------------------------------------------------------------------------------…
424 Can I do type-based alias analysis on LLVM IR?
425 ----------------------------------------------
427 You can't do type-based alias analysis using LLVM's built-in type system,
430 LLVM's type-based alias analysis pass uses metadata to describe a different type
431 system (such as the C type system), and performs type-based aliasing on top of
435 --------------------------------------------
448 allowed to be negative (e.g. "``gep i32 *%P, i32 -1``") but the pointer itself
455 How can I tell if my front-end is following the rules?
456 ------------------------------------------------------
459 way to do this is to manually check each place in your front-end where
472 -----------------------------
477 * Support C, C-like languages, and languages which can be conceptually lowered
487 * Support non-C-like languages, to the extent that it doesn't interfere with
490 * Minimize target-specific information in the IR.
493 ------------------------------------------------
503 ------------------
508 they've made non-trivial changes, translating back into LLVM IR can involve
509 reverse-engineering the structure of the addressing in order to fit it into the
511 reconstruct this structure; sometimes the underlying addressing doesn't
513 emit a GEP with the base pointer casted to a simple address-unit pointer, using