From e41bf82107eb89b7f97233ee2625f107c056cedf Mon Sep 17 00:00:00 2001 From: Evan Cheng Date: Sun, 5 Feb 2006 06:43:12 +0000 Subject: Allow more loads to be folded which were previously prevented from happening due to ordering issue. i.e. they were selected for chain use first. Now at load select time, check if it is being selected for a chain use and if it has only a single real use. If so, return a HANDLENODE (with the load as its operand) in its place and record it. When it is folded or the load is selected for a real use, the isel records it as the replacement for the HANDLENODE. The replacement is done when all nodes are selected. This scheme exposed a couple of problems where cycles can happen. (See comments in EmitMatchCode() for descriptions of the problems and their workaround / solutions.) These problems have been resolved with a small compile time penality. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25995 91177308-0d34-0410-b5e6-96231b3b80d8 --- utils/TableGen/DAGISelEmitter.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'utils/TableGen/DAGISelEmitter.h') diff --git a/utils/TableGen/DAGISelEmitter.h b/utils/TableGen/DAGISelEmitter.h index 04a87b7ba4..0cc1dbf89a 100644 --- a/utils/TableGen/DAGISelEmitter.h +++ b/utils/TableGen/DAGISelEmitter.h @@ -471,7 +471,8 @@ private: std::vector &InstImpInputs, std::vector &InstImpResults); void GenerateCodeForPattern(PatternToMatch &Pattern, - std::vector > &GeneratedCode); + std::vector > &GeneratedCode, + bool UseGoto); void EmitPatterns(std::vector > > > &Patterns, unsigned Indent, std::ostream &OS); -- cgit v1.2.3