forked from OSchip/llvm-project
1e30820483
WinEHPrepare marks any function call from EH funclets as unreachable, if it's not a nounwind intrinsic or has no proper funclet bundle operand. This affects ARC intrinsics on Windows, because they are lowered to regular function calls in the PreISelIntrinsicLowering pass. It caused silent binary truncations and crashes during unwinding with the GNUstep ObjC runtime: https://github.com/gnustep/libobjc2/issues/222 This patch adds a new function `llvm::IntrinsicInst::mayLowerToFunctionCall()` that aims to collect all affected intrinsic IDs. * Clang CodeGen uses it to determine whether or not it must emit a funclet bundle operand. * PreISelIntrinsicLowering asserts that the function returns true for all ObjC runtime calls it lowers. * LLVM uses it to determine whether or not a funclet bundle operand must be propagated to inlined call sites. Reviewed By: theraven Differential Revision: https://reviews.llvm.org/D128190 |
||
---|---|---|
.. | ||
OperandBundles | ||
NamedMDNode.ll | ||
NamedMDNode2.ll | ||
README.txt | ||
alias2.ll | ||
aliases.ll | ||
alignment.ll | ||
attributes.ll | ||
basictest.ll | ||
callingconventions.ll | ||
calltest.ll | ||
casttest.ll | ||
cfgstructures.ll | ||
cold.ll | ||
comdat.ll | ||
const_pv.ll | ||
constexpr.ll | ||
constpointer.ll | ||
elf-deplibs.ll | ||
elf-linker-options.ll | ||
escaped_label.ll | ||
exception.ll | ||
float.ll | ||
fold-fpcast.ll | ||
forwardreftest.ll | ||
fp-intrinsics.ll | ||
global_pv.ll | ||
global_section.ll | ||
globalredefinition3.ll | ||
globalvars.ll | ||
indirectcall.ll | ||
indirectcall2.ll | ||
inlineasm.ll | ||
instructions.ll | ||
intrinsic-noduplicate.ll | ||
intrinsics.ll | ||
load_extension.ll | ||
md_on_instruction.ll | ||
memorymarkers.ll | ||
metadata.ll | ||
minsize_attr.ll | ||
newcasts.ll | ||
optnone-llc.ll | ||
optnone-opt.ll | ||
optnone.ll | ||
packed.ll | ||
packed_struct.ll | ||
paramattrs.ll | ||
ppcld.ll | ||
prefixdata.ll | ||
prologuedata.ll | ||
properties.ll | ||
prototype.ll | ||
recursivetype.ll | ||
seh-nounwind.ll | ||
simplecalltest.ll | ||
small.ll | ||
smallest.ll | ||
sparcld.ll | ||
strip_names.ll | ||
terminators.ll | ||
testalloca.ll | ||
testconstants.ll | ||
testlogical.ll | ||
testtype.ll | ||
testvarargs.ll | ||
undefined.ll | ||
unreachable.ll | ||
varargs.ll | ||
varargs_new.ll | ||
vector-cast-constant-exprs.ll | ||
weak_constant.ll | ||
weirdnames.ll | ||
x86ld.ll |
README.txt
This directory contains test cases for individual source features of LLVM. It is designed to make sure that the major components of LLVM support all of the features of LLVM, for very small examples. Entire programs should not go here. Regression tests for individual bug fixes should go into the test/Regression dir.