mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-19 17:33:29 +00:00
5581563457
I thought that I had fixed this problem in r216818, but I did not do a very good job. The underlying issue is that when we add alias.scope metadata we are asserting that this metadata completely describes the aliasing relationships within the current aliasing scope domain, and so in the context of translating noalias argument attributes, the pointers must all be based on noalias arguments (as underlying objects) and have no other kind of underlying object. In r216818 excluding appropriate accesses from getting alias.scope metadata is done by looking for underlying objects that are not identified function-local objects -- but that's wrong because allocas, etc. are also function-local objects and we need to explicitly check that all underlying objects are the noalias arguments for which we're adding metadata aliasing scopes. This fixes the underlying-object check for adding alias.scope metadata, and does some refactoring of the related capture-checking eligibility logic (and adds more comments; hopefully making everything a bit clearer). Fixes self-hosting on x86_64 with -mllvm -enable-noalias-to-md-conversion (the feature is still disabled by default). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216863 91177308-0d34-0410-b5e6-96231b3b80d8 |
||
---|---|---|
.. | ||
2003-09-14-InlineValue.ll | ||
2003-09-22-PHINodeInlineFail.ll | ||
2003-09-22-PHINodesInExceptionDest.ll | ||
2003-09-22-PHINodesInNormalInvokeDest.ll | ||
2003-10-13-AllocaDominanceProblem.ll | ||
2004-04-15-InlineDeletesCall.ll | ||
2004-04-20-InlineLinkOnce.ll | ||
2004-10-17-InlineFunctionWithoutReturn.ll | ||
2006-01-14-CallGraphUpdate.ll | ||
2006-07-12-InlinePruneCGUpdate.ll | ||
2006-11-09-InlineCGUpdate-2.ll | ||
2006-11-09-InlineCGUpdate.ll | ||
2007-04-15-InlineEH.ll | ||
2007-06-25-WeakInline.ll | ||
2007-12-19-InlineNoUnwind.ll | ||
2008-09-02-NoInline.ll | ||
2009-01-08-NoInlineDynamicAlloca.ll | ||
2009-01-13-RecursiveInlineCrash.ll | ||
2009-05-07-CallUsingSelfCrash.ll | ||
2010-05-12-ValueMap.ll | ||
alloca_test.ll | ||
alloca-bonus.ll | ||
alloca-in-scc.ll | ||
alloca-merge-align-nodl.ll | ||
alloca-merge-align.ll | ||
always-inline.ll | ||
array_merge.ll | ||
attributes.ll | ||
basictest.ll | ||
blockaddress.ll | ||
byval_lifetime.ll | ||
byval-tail-call.ll | ||
byval.ll | ||
callgraph-update.ll | ||
casts.ll | ||
cfg_preserve_test.ll | ||
crash2.ll | ||
crash.ll | ||
debug-invoke.ll | ||
delete-call.ll | ||
devirtualize-2.ll | ||
devirtualize-3.ll | ||
devirtualize.ll | ||
dynamic_alloca_test.ll | ||
externally_available.ll | ||
gvn-inline-iteration.ll | ||
ignore-debug-info.ll | ||
inline_cleanup.ll | ||
inline_constprop.ll | ||
inline_dce.ll | ||
inline_invoke.ll | ||
inline_minisize.ll | ||
inline_prune.ll | ||
inline_returns_twice.ll | ||
inline_ssp.ll | ||
inline-byval-bonus.ll | ||
inline-cold.ll | ||
inline-invoke-tail.ll | ||
inline-invoke-with-asm-call.ll | ||
inline-musttail-varargs.ll | ||
inline-optnone.ll | ||
inline-optsize.ll | ||
inline-tail.ll | ||
inline-vla.ll | ||
invoke_test-1.ll | ||
invoke_test-2.ll | ||
invoke_test-3.ll | ||
invoke-cleanup.ll | ||
invoke-combine-clauses.ll | ||
invoke-cost.ll | ||
lifetime-no-datalayout.ll | ||
lifetime.ll | ||
nested-inline.ll | ||
noalias2.ll | ||
noalias-calls.ll | ||
noalias-cs.ll | ||
noalias.ll | ||
noinline-recursive-fn.ll | ||
noinline.ll | ||
null-function.ll | ||
optimization-remarks.ll | ||
PR4909.ll | ||
ptr-diff.ll | ||
recursive.ll | ||
switch.ll |