+/* Operation to be performed for the parameter in ipa_parm_adjustment + below. */ +enum ipa_parm_op { + IPA_PARM_OP_NONE, + + /* This describes a brand new parameter. + + For new parameters, base_index must be >= the number of + DECL_ARGUMENTS in the function. That is, new arguments will be + the last arguments in the adjusted function....where this requirement comes from. I would think that base_index would be completely ignored for the new parameters, is it not?
Well, whadayaknow... base_index is indeed ignored, and a cursory look at ipa_modify_formal_parameters() suggests that you may be able to insert arguments out of order (untested). Jakub, you may be in luck :).
Committing the attached fix to the branch. Thanks again.
commit cc9c895aebe4ba1c017720fe5a43599b53696236 Author: Aldy Hernandez <[email protected]> Date: Tue Nov 12 09:42:30 2013 -0700 * ipa-prop.h (enum ipa_parm_op): Adjust comment to IPA_PARM_OP_NEW entry. diff --git a/gcc/ipa-prop.h b/gcc/ipa-prop.h index 0621a13..a2d8797 100644 --- a/gcc/ipa-prop.h +++ b/gcc/ipa-prop.h @@ -616,11 +616,7 @@ enum ipa_parm_op { /* This describes a brand new parameter. - For new parameters, base_index must be >= the number of - DECL_ARGUMENTS in the function. That is, new arguments will be - the last arguments in the adjusted function. - - Also, `type' should be set to the new type, `arg_prefix' + The field `type' should be set to the new type, `arg_prefix' should be set to the string prefix for the new DECL_NAME, and `new_decl' will ultimately hold the newly created argument. */ IPA_PARM_OP_NEW,
