mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-07-17 20:29:31 +00:00
check in anton's patch to make inlining happen in a determinstic order
and fix the bug that it uncovers: inlining a pattern fragment could bring in other pattern fragments if the inlinee hadn't already been inlined. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52888 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
80c1a5622a
commit
2ca698df93
@ -679,7 +679,10 @@ TreePatternNode *TreePatternNode::InlinePatternFragments(TreePattern &TP) {
|
|||||||
|
|
||||||
// Get a new copy of this fragment to stitch into here.
|
// Get a new copy of this fragment to stitch into here.
|
||||||
//delete this; // FIXME: implement refcounting!
|
//delete this; // FIXME: implement refcounting!
|
||||||
return FragTree;
|
|
||||||
|
// The fragment we inlined could have recursive inlining that is needed. See
|
||||||
|
// if there are any pattern fragments in it and inline them as needed.
|
||||||
|
return FragTree->InlinePatternFragments(TP);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// getImplicitType - Check to see if the specified record has an implicit
|
/// getImplicitType - Check to see if the specified record has an implicit
|
||||||
@ -1383,9 +1386,8 @@ void CodeGenDAGPatterns::ParsePatternFragments() {
|
|||||||
|
|
||||||
// Now that we've parsed all of the tree fragments, do a closure on them so
|
// Now that we've parsed all of the tree fragments, do a closure on them so
|
||||||
// that there are not references to PatFrags left inside of them.
|
// that there are not references to PatFrags left inside of them.
|
||||||
for (std::map<Record*, TreePattern*>::iterator I = PatternFragments.begin(),
|
for (unsigned i = 0, e = Fragments.size(); i != e; ++i) {
|
||||||
E = PatternFragments.end(); I != E; ++I) {
|
TreePattern *ThePat = PatternFragments[Fragments[i]];
|
||||||
TreePattern *ThePat = I->second;
|
|
||||||
ThePat->InlinePatternFragments();
|
ThePat->InlinePatternFragments();
|
||||||
|
|
||||||
// Infer as many types as possible. Don't worry about it if we don't infer
|
// Infer as many types as possible. Don't worry about it if we don't infer
|
||||||
|
Loading…
Reference in New Issue
Block a user