Home | History | Annotate | Download | only in CodeGen

Lines Matching refs:Cleanup

1 //===-- EHScopeStack.h - Stack for cleanup IR generation --------*- C++ -*-===//
34 /// the innermost cleanup. When a (normal) cleanup is popped, any
35 /// unresolved fixups in that scope are threaded through the cleanup.
127 /// Information for lazily generating a cleanup. Subclasses must be
129 /// allocated on the cleanup stack and freely copied and moved
132 /// Cleanup implementations should generally be declared in an
134 class Cleanup {
150 /// isForEH - true if the current emission is for an EH cleanup.
158 /// isEHCleanupKind - true if the cleanup was pushed as an EH
159 /// cleanup.
167 virtual ~Cleanup() {}
169 /// Emit the cleanup. For normal cleanups, this is run in the
170 /// same EH context as when the cleanup was pushed, i.e. the
171 /// immediately-enclosing context of the cleanup scope. For
174 // \param flags cleanup kind.
179 /// then restores them and performs the cleanup.
181 class ConditionalCleanup1 : public Cleanup {
196 class ConditionalCleanup2 : public Cleanup {
214 class ConditionalCleanup3 : public Cleanup {
235 class ConditionalCleanup4 : public Cleanup {
274 /// The innermost normal cleanup on the stack.
282 /// know the EH stack depth. Whenever we pop a cleanup, we have
287 /// When popping out of a cleanup, these uses are threaded through
288 /// the cleanup and adjusted to point to the new cleanup.
311 /// Push a lazily-created cleanup on the stack.
315 Cleanup *Obj = new(Buffer) T();
319 /// Push a lazily-created cleanup on the stack.
323 Cleanup *Obj = new(Buffer) T(a0);
327 /// Push a lazily-created cleanup on the stack.
331 Cleanup *Obj = new(Buffer) T(a0, a1);
335 /// Push a lazily-created cleanup on the stack.
339 Cleanup *Obj = new(Buffer) T(a0, a1, a2);
343 /// Push a lazily-created cleanup on the stack.
347 Cleanup *Obj = new(Buffer) T(a0, a1, a2, a3);
351 /// Push a lazily-created cleanup on the stack.
355 Cleanup *Obj = new(Buffer) T(a0, a1, a2, a3, a4);
361 /// Push a cleanup with non-constant storage requirements on the
362 /// stack. The cleanup type must provide an additional static method:
368 /// restrictions as normal cleanup member data.
370 /// The pointer returned from this method is valid until the cleanup
378 void pushCopyOfCleanup(CleanupKind Kind, const void *Cleanup, size_t Size) {
380 std::memcpy(Buffer, Cleanup, Size);
383 /// Pops a cleanup scope off the stack. This is private to CGCleanup.cpp.
418 /// Returns the innermost normal cleanup on the stack, or
460 /// Removes the cleanup pointed to by the given stable_iterator.
463 /// Add a branch fixup to the current cleanup scope.
478 /// cleanup or resolved one or more fixups.