Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/gcc.dg/pr42389.c @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 /* { dg-do compile { target powerpc*-*-* ia64-*-* i?86-*-* x86_64-*-* } } */ | |
2 /* { dg-options "-O2 -fselective-scheduling -fsel-sched-pipelining -fsched-pressure" } */ | |
3 | |
4 struct s_linked_f_pointer | |
5 { | |
6 struct s_linked_f_pointer *next; | |
7 float *fptr; | |
8 }; | |
9 struct s_trace | |
10 { | |
11 int index; | |
12 }; | |
13 struct s_rr_cost | |
14 { | |
15 float base_cost; | |
16 float acc_cost; | |
17 }; | |
18 extern int num_nets; | |
19 extern struct s_trace **trace_head; | |
20 extern struct s_rr_cost *rr_cost; | |
21 struct s_rr_route | |
22 { | |
23 float cost; | |
24 }; | |
25 static int heap_tail; | |
26 extern struct s_linked_f_pointer *rr_modified_head; | |
27 extern struct s_rr_route *rr_route; | |
28 | |
29 void | |
30 empty_heap (void) | |
31 { | |
32 heap_tail = 1; | |
33 } | |
34 | |
35 void | |
36 reset_path_costs (void) | |
37 { | |
38 struct s_linked_f_pointer *mod_ptr; | |
39 if (rr_modified_head != ((void *) 0)) | |
40 { | |
41 mod_ptr = rr_modified_head; | |
42 while (mod_ptr->next != ((void *) 0)) | |
43 { | |
44 *(mod_ptr->fptr) = 1.e30; | |
45 mod_ptr = mod_ptr->next; | |
46 } | |
47 rr_modified_head = ((void *) 0); | |
48 } | |
49 } | |
50 | |
51 static void | |
52 route_net (int inet) | |
53 { | |
54 int i; | |
55 for (i = 1; i < inet; i++) | |
56 reset_path_costs (); | |
57 empty_heap (); | |
58 reset_path_costs (); | |
59 } | |
60 | |
61 void | |
62 pathfinder_update_one_cost (int inet, float pres_fac, float acc_fac) | |
63 { | |
64 struct s_trace *tptr; | |
65 int inode = 0; | |
66 | |
67 tptr = trace_head[inet]; | |
68 inode = tptr->index; | |
69 rr_route[inode].cost = rr_cost[inode].base_cost + rr_cost[inode].acc_cost; | |
70 } | |
71 | |
72 int | |
73 try_route (int n, float x, float y) | |
74 { | |
75 int inet, itry; | |
76 float pres_fac; | |
77 for (itry = 1; itry <= n; itry++) | |
78 { | |
79 for (inet = 0; inet < num_nets; inet++) | |
80 { | |
81 route_net (inet); | |
82 pathfinder_update_one_cost (inet, pres_fac, x); | |
83 } | |
84 pres_fac *= y; | |
85 } | |
86 } | |
87 |