Mercurial > hg > CbC > CbC_gcc
comparison gcc/alias.c @ 19:58ad6c70ea60
update gcc from 4.4.0 to 4.4.1.
author | kent@firefly.cr.ie.u-ryukyu.ac.jp |
---|---|
date | Thu, 24 Sep 2009 13:21:57 +0900 |
parents | a06113de4d67 |
children | 855418dad1a3 |
comparison
equal
deleted
inserted
replaced
18:33936f7f2835 | 19:58ad6c70ea60 |
---|---|
1436 for (l = val->locs; l; l = l->next) | 1436 for (l = val->locs; l; l = l->next) |
1437 if ((x = find_base_term (l->loc)) != 0) | 1437 if ((x = find_base_term (l->loc)) != 0) |
1438 return x; | 1438 return x; |
1439 return 0; | 1439 return 0; |
1440 | 1440 |
1441 case LO_SUM: | |
1442 /* The standard form is (lo_sum reg sym) so look only at the | |
1443 second operand. */ | |
1444 return find_base_term (XEXP (x, 1)); | |
1445 | |
1441 case CONST: | 1446 case CONST: |
1442 x = XEXP (x, 0); | 1447 x = XEXP (x, 0); |
1443 if (GET_CODE (x) != PLUS && GET_CODE (x) != MINUS) | 1448 if (GET_CODE (x) != PLUS && GET_CODE (x) != MINUS) |
1444 return 0; | 1449 return 0; |
1445 /* Fall through. */ | 1450 /* Fall through. */ |
1446 case LO_SUM: | |
1447 /* The standard form is (lo_sum reg sym) so look only at the | |
1448 second operand. */ | |
1449 return find_base_term (XEXP (x, 1)); | |
1450 case PLUS: | 1451 case PLUS: |
1451 case MINUS: | 1452 case MINUS: |
1452 { | 1453 { |
1453 rtx tmp1 = XEXP (x, 0); | 1454 rtx tmp1 = XEXP (x, 0); |
1454 rtx tmp2 = XEXP (x, 1); | 1455 rtx tmp2 = XEXP (x, 1); |
2248 | 2249 |
2249 /* Canonical true dependence: X is read after store in MEM takes place. | 2250 /* Canonical true dependence: X is read after store in MEM takes place. |
2250 Variant of true_dependence which assumes MEM has already been | 2251 Variant of true_dependence which assumes MEM has already been |
2251 canonicalized (hence we no longer do that here). | 2252 canonicalized (hence we no longer do that here). |
2252 The mem_addr argument has been added, since true_dependence computed | 2253 The mem_addr argument has been added, since true_dependence computed |
2253 this value prior to canonicalizing. */ | 2254 this value prior to canonicalizing. |
2255 If x_addr is non-NULL, it is used in preference of XEXP (x, 0). */ | |
2254 | 2256 |
2255 int | 2257 int |
2256 canon_true_dependence (const_rtx mem, enum machine_mode mem_mode, rtx mem_addr, | 2258 canon_true_dependence (const_rtx mem, enum machine_mode mem_mode, rtx mem_addr, |
2257 const_rtx x, bool (*varies) (const_rtx, bool)) | 2259 const_rtx x, rtx x_addr, bool (*varies) (const_rtx, bool)) |
2258 { | 2260 { |
2259 rtx x_addr; | |
2260 | |
2261 if (MEM_VOLATILE_P (x) && MEM_VOLATILE_P (mem)) | 2261 if (MEM_VOLATILE_P (x) && MEM_VOLATILE_P (mem)) |
2262 return 1; | 2262 return 1; |
2263 | 2263 |
2264 /* (mem:BLK (scratch)) is a special mechanism to conflict with everything. | 2264 /* (mem:BLK (scratch)) is a special mechanism to conflict with everything. |
2265 This is used in epilogue deallocation functions. */ | 2265 This is used in epilogue deallocation functions. */ |
2281 return 0; | 2281 return 0; |
2282 | 2282 |
2283 if (nonoverlapping_memrefs_p (x, mem)) | 2283 if (nonoverlapping_memrefs_p (x, mem)) |
2284 return 0; | 2284 return 0; |
2285 | 2285 |
2286 x_addr = get_addr (XEXP (x, 0)); | 2286 if (! x_addr) |
2287 x_addr = get_addr (XEXP (x, 0)); | |
2287 | 2288 |
2288 if (! base_alias_check (x_addr, mem_addr, GET_MODE (x), mem_mode)) | 2289 if (! base_alias_check (x_addr, mem_addr, GET_MODE (x), mem_mode)) |
2289 return 0; | 2290 return 0; |
2290 | 2291 |
2291 x_addr = canon_rtx (x_addr); | 2292 x_addr = canon_rtx (x_addr); |