I recently got an idea of a new programming language and I'm thinking of implementing it as a gcc frontend. My proposed language has multiple return values and a possibility to use tagged dynamically typed variables, like in Lisp. There will also be a possibility to use static typing for variables that will only ever have a single type during their lifetime. I've read gcc internals but haven't written any code yet. I plan to use a private representation for parsing and semantic analysis, then convert to GIMPLE. Is it preferred to convert multiple return values to extra reference parameters before converting to GIMPLE or should I rather expand the middle-end to support them properly? I'm also worried that dynamically typed variables won't get optimized as they must be implemented as a language-specific opaque type. But I can live with this and implement optimization for them later. That optimization would delete unnecessary type checks if it could prove them unnecessary. Thank you for your insights :) BR Juhani Viheräkoski