search for: catchblock

Displaying 9 results from an estimated 9 matches for "catchblock".

2015 May 18
4
[LLVMdev] New EH representation for MSVC compatibility
...block. I wanted to express that as data, though, so that in the common case that the noexcept function is not inlined, we can simply flip the "noexcept" bit in the EH info. There's a similar optimization we can do for Itanium that we miss today. > Invokes that are reached after a catchblock without following any unwind > edges must transitively unwind to the first catchend block that the > catchblock unwinds to. > > > > I’m not sure I understand this correctly. In particular, I’m confused > about the roles of resume and catchend. > catchendblock is really the...
2015 May 15
8
[LLVMdev] RFC: New EH representation for MSVC compatibility
...EH personalities that produce no value resume void Now resume takes an optional label operand which is the next EH action to run. The label must point to a block starting with an EH action. The various EH action blocks impose personality-specific rules about what the targets of the resume can be. catchblock --------------- %val = catchblock <valty> [i8* @typeid.int, i32 7, i32* %e.addr] to label %catch.int unwind label %nextaction The catchblock is a terminator that conditionally selects which block to execute based on the opaque operands interpreted by the personality function. If the exc...
2015 Jul 01
2
[LLVMdev] New EH representation for MSVC compatibility
...liminary step was to push personality routines off of LandingPadInst and onto functions, this is already in trunk. On the IR front, we ended up with the following set of instructions: catcblock, catchret, cleanupblock, cleanupret, terminateblock Of these, I've locally added basic support for catchblock, catchret and cleanupret. I'm working on cleanupblock and terminateblock as we speak. We'll still need to hook up CodeGenPrep and SDAG up to the new representation. Extra hands will be appreciated auditing LLVM's optimizations to ensure that they do not miscompile in the face of our...
2015 Jun 18
2
[LLVMdev] New EH representation for MSVC compatibility
...table blocks for instance) got addressed, but > I'm having trouble tracking all the changes in discussion. Even just a > quick list of "and we changed X" would be helpful. > We should do an updated summary, but I've been busy. We really do need to keep the unsplittable catchblocks, though. Fundamentally, what we have is control flow described by data. This proposal essentially adds LLVM instructions that model that data. We can't insert real instructions like loads and stores between EH dispatch table entries, so it's forbidden. We can compensate for all the other...
2015 May 18
2
[LLVMdev] RFC: New EH representation for MSVC compatibility
...ing that > code motion optimizations are expected to check for explicitly to avoid > introducing UB per the "Executing such an invoke [or call] that does not > transitively unwind to the correct catchend block has undefined behavior" > rule? > Yes, crossing a resume from a catchblock ends the lifetime of the exception object, so I'd say that's a "writes escaped memory" constraint. That said, a resume after a cleanupblock doesn't, but I'm not sure it's worth having this kind of fine-grained analysis. I'm OK teaching SimplifyCFG to combine cleanu...
2015 May 19
2
[LLVMdev] RFC: New EH representation for MSVC compatibility
...s include > 'unwind' and 'continue', and I'd like more ideas > > The first thing that comes to mind is 'endatch/exitcatch', but to use that > you'd need to rename other things since it would be confusing vis-à-vis > catchendblock and lack symmetry with catchblock that isn't prefixed with > begin/enter. > > You could consider 'filter' (or 'filterblock') for 'catchblock', since > conceptually it plays the role of a filter (typically one which consults > type information; I've seen such things called "typetes...
2015 May 19
2
[LLVMdev] RFC: New EH representation for MSVC compatibility
...s include > 'unwind' and 'continue', and I'd like more ideas > > The first thing that comes to mind is 'endatch/exitcatch', but to use that > you'd need to rename other things since it would be confusing vis-à-vis > catchendblock and lack symmetry with catchblock that isn't prefixed with > begin/enter. > > You could consider 'filter' (or 'filterblock') for 'catchblock', since > conceptually it plays the role of a filter (typically one which consults > type information; I've seen such things called "typetes...
2015 May 20
2
[LLVMdev] RFC: New EH representation for MSVC compatibility
...s include > 'unwind' and 'continue', and I'd like more ideas > > The first thing that comes to mind is 'endatch/exitcatch', but to use that > you'd need to rename other things since it would be confusing vis-à-vis > catchendblock and lack symmetry with catchblock that isn't prefixed with > begin/enter. > > You could consider 'filter' (or 'filterblock') for 'catchblock', since > conceptually it plays the role of a filter (typically one which consults > type information; I've seen such things called "typetes...
2015 May 18
3
[LLVMdev] New EH representation for MSVC compatibility
> optimizing EH codepaths is not usually performance critical. >> Leaving aside the rest of the thread, I feel the need to refute this point in isolation. I've found that optimizing (usually simplifying and eliminating) exception paths ends up being *extremely* important for my workloads. Failing to optimize exception paths sufficiently tends to indirectly hurt things like inlining