May I check this in? On Wed, Aug 4, 2010 at 12:06 PM, John Thompson < [email protected]> wrote:
> To try and find out what the LLVM backend does with constraints I traced > both llvm-as and llc in a debugger, following an inline asm statement. It > appears that the constraints get passed effectively unchanged through > llvm-asm, and that in llc, the ChooseConstraint function in > CodeGen/SelectionDAG/TargetLowering.cpp is a key part of the handling. It > appears that ChooseConstraint already has support for selecting from > multiple contraints to some extent, and that it expects them to be > concatenated without the comma and other modifiers, and looks at them > character by character for a given constraint string. There's not much > support for architecture-specific constraints, but it does seem to try to > select from between at least 'r' and 'm'. > Therefore, it seems that the first step to the solution is to get Clang to > output multiple alternative constraints in the form that llc expects. The > enclosed patch does this by removing the commas and modifiers not currently > supported in LLVM, and also removing duplicate alternative constraints on a > per-constraint string basis. I've also added a minimal test to one of the > asm test files. > > The next steps would be to start adding support for all the constraint > letters, both the generic and architecture-specific ones that make sense, > but I'll probably leave that until after my work on the front end issues I'm > encountering while compiling a PS3 game, or even better, to others > specializing on the back-end targets. > > I know that inline asm is a problematic bit of legacy, but it's pretty > important for clients like Sony that have huge existing code bases they want > to run through Clang code analysis, and eventually even production building. > > Thanks. > > -John > > -- > John Thompson > [email protected] > > -- John Thompson [email protected]
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
