From 554fd8c5195424bdbcabf5de30fdc183aba391bd Mon Sep 17 00:00:00 2001 From: upstream source tree Date: Sun, 15 Mar 2015 20:14:05 -0400 Subject: obtained gcc-4.6.4.tar.bz2 from upstream website; verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository. --- gcc/testsuite/gcc.dg/pr42250.c | 68 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/pr42250.c (limited to 'gcc/testsuite/gcc.dg/pr42250.c') diff --git a/gcc/testsuite/gcc.dg/pr42250.c b/gcc/testsuite/gcc.dg/pr42250.c new file mode 100644 index 000000000..3ba8e8413 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr42250.c @@ -0,0 +1,68 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fipa-struct-reorg" } */ + +extern double log10 (double __x); +extern double ceil (double __x); +extern double floor (double __x); +extern void free (void *__ptr); +extern void *my_malloc (unsigned int); +extern int num_rr_nodes; +static float get_cblock_trans (int *num_inputs_to_cblock, + int max_inputs_to_cblock, + float trans_cblock_to_lblock_buf, + float trans_sram_bit); +static float trans_per_mux (int num_inputs, float trans_sram_bit); +void +count_routing_transistors (int num_switch, float R_minW_nmos, + float R_minW_pmos) +{ + int *num_inputs_to_cblock; + int iswitch, i, j, iseg, max_inputs_to_cblock; + float input_cblock_trans; + const float trans_sram_bit = 6.; + float trans_cblock_to_lblock_buf; + input_cblock_trans = + get_cblock_trans (num_inputs_to_cblock, max_inputs_to_cblock, + trans_cblock_to_lblock_buf, trans_sram_bit); +} + +static float +get_cblock_trans (int *num_inputs_to_cblock, int max_inputs_to_cblock, + float trans_cblock_to_lblock_buf, float trans_sram_bit) +{ + float *trans_per_cblock; + float trans_count; + int i, num_inputs; + + trans_per_cblock = + (float *) my_malloc ((max_inputs_to_cblock + 1) * sizeof (float)); + for (i = 1; i <= max_inputs_to_cblock; i++) + trans_per_cblock[i] = + trans_per_mux (i, trans_sram_bit) + trans_cblock_to_lblock_buf; + for (i = 0; i < num_rr_nodes; i++) + { + num_inputs = num_inputs_to_cblock[i]; + trans_count += trans_per_cblock[num_inputs]; + } + free (trans_per_cblock); + return (trans_count); +} + +static float +trans_per_mux (int num_inputs, float trans_sram_bit) +{ + int nlevels, ilevel, current_inps; + float ntrans = 0; + + if (num_inputs <= 1) + return (0); + nlevels = ceil (log10 (num_inputs) / log10 (2.) - 0.00001); + current_inps = num_inputs; + for (ilevel = 1; ilevel <= nlevels; ilevel++) + { + ntrans += 2 * floor (current_inps / 2.); + current_inps = ceil (current_inps / 2.); + } + ntrans += trans_sram_bit * nlevels; + return (ntrans); +} -- cgit v1.2.3