Skip to content
Snippets Groups Projects
  • Thomas Koenig's avatar
    c2a0ee58
    Add modular exponentiation for UNSIGNED. · c2a0ee58
    Thomas Koenig authored
    gcc/fortran/ChangeLog:
    
    	* arith.cc (arith_power): Handle modular arithmetic for
    	BT_UNSIGNED.
    	(eval_intrinsic):  Error for unsigned exponentiation with
    	-pedantic.
    	* expr.cc (gfc_type_convert_binary): Use type of first
    	argument for unsigned exponentiation.
    	* gfortran.texi: Mention arithmetic exponentiation.
    	* resolve.cc (resolve_operator): Allow unsigned exponentiation.
    	* trans-decl.cc (gfc_build_intrinsic_function_decls): Build
    	declarations for unsigned exponentiation.
    	* trans-expr.cc (gfc_conv_cst_uint_power): New function.
    	(gfc_conv_power_op): Call it.  Handle unsigned exponentiation.
    	* trans.h (gfor_fndecl_unsigned_pow_list):  Add declaration.
    
    libgfortran/ChangeLog:
    
    	* Makefile.am: Add files for unsigned exponentiation.
    	* Makefile.in: Regenerate.
    	* gfortran.map: Add functions for unsigned exponentiation.
    	* generated/pow_m16_m1.c: New file.
    	* generated/pow_m16_m16.c: New file.
    	* generated/pow_m16_m2.c: New file.
    	* generated/pow_m16_m4.c: New file.
    	* generated/pow_m16_m8.c: New file.
    	* generated/pow_m1_m1.c: New file.
    	* generated/pow_m1_m16.c: New file.
    	* generated/pow_m1_m2.c: New file.
    	* generated/pow_m1_m4.c: New file.
    	* generated/pow_m1_m8.c: New file.
    	* generated/pow_m2_m1.c: New file.
    	* generated/pow_m2_m16.c: New file.
    	* generated/pow_m2_m2.c: New file.
    	* generated/pow_m2_m4.c: New file.
    	* generated/pow_m2_m8.c: New file.
    	* generated/pow_m4_m1.c: New file.
    	* generated/pow_m4_m16.c: New file.
    	* generated/pow_m4_m2.c: New file.
    	* generated/pow_m4_m4.c: New file.
    	* generated/pow_m4_m8.c: New file.
    	* generated/pow_m8_m1.c: New file.
    	* generated/pow_m8_m16.c: New file.
    	* generated/pow_m8_m2.c: New file.
    	* generated/pow_m8_m4.c: New file.
    	* generated/pow_m8_m8.c: New file.
    	* m4/powu.m4: New file.
    
    gcc/testsuite/ChangeLog:
    
    	* gfortran.dg/unsigned_15.f90: Adjust error messages.
    	* gfortran.dg/unsigned_43.f90: New test.
    	* gfortran.dg/unsigned_44.f90: New test.
    c2a0ee58
    History
    Add modular exponentiation for UNSIGNED.
    Thomas Koenig authored
    gcc/fortran/ChangeLog:
    
    	* arith.cc (arith_power): Handle modular arithmetic for
    	BT_UNSIGNED.
    	(eval_intrinsic):  Error for unsigned exponentiation with
    	-pedantic.
    	* expr.cc (gfc_type_convert_binary): Use type of first
    	argument for unsigned exponentiation.
    	* gfortran.texi: Mention arithmetic exponentiation.
    	* resolve.cc (resolve_operator): Allow unsigned exponentiation.
    	* trans-decl.cc (gfc_build_intrinsic_function_decls): Build
    	declarations for unsigned exponentiation.
    	* trans-expr.cc (gfc_conv_cst_uint_power): New function.
    	(gfc_conv_power_op): Call it.  Handle unsigned exponentiation.
    	* trans.h (gfor_fndecl_unsigned_pow_list):  Add declaration.
    
    libgfortran/ChangeLog:
    
    	* Makefile.am: Add files for unsigned exponentiation.
    	* Makefile.in: Regenerate.
    	* gfortran.map: Add functions for unsigned exponentiation.
    	* generated/pow_m16_m1.c: New file.
    	* generated/pow_m16_m16.c: New file.
    	* generated/pow_m16_m2.c: New file.
    	* generated/pow_m16_m4.c: New file.
    	* generated/pow_m16_m8.c: New file.
    	* generated/pow_m1_m1.c: New file.
    	* generated/pow_m1_m16.c: New file.
    	* generated/pow_m1_m2.c: New file.
    	* generated/pow_m1_m4.c: New file.
    	* generated/pow_m1_m8.c: New file.
    	* generated/pow_m2_m1.c: New file.
    	* generated/pow_m2_m16.c: New file.
    	* generated/pow_m2_m2.c: New file.
    	* generated/pow_m2_m4.c: New file.
    	* generated/pow_m2_m8.c: New file.
    	* generated/pow_m4_m1.c: New file.
    	* generated/pow_m4_m16.c: New file.
    	* generated/pow_m4_m2.c: New file.
    	* generated/pow_m4_m4.c: New file.
    	* generated/pow_m4_m8.c: New file.
    	* generated/pow_m8_m1.c: New file.
    	* generated/pow_m8_m16.c: New file.
    	* generated/pow_m8_m2.c: New file.
    	* generated/pow_m8_m4.c: New file.
    	* generated/pow_m8_m8.c: New file.
    	* m4/powu.m4: New file.
    
    gcc/testsuite/ChangeLog:
    
    	* gfortran.dg/unsigned_15.f90: Adjust error messages.
    	* gfortran.dg/unsigned_43.f90: New test.
    	* gfortran.dg/unsigned_44.f90: New test.