diff options
| author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2018-06-22 17:25:39 +0200 |
|---|---|---|
| committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2018-06-29 23:19:40 +0200 |
| commit | 3ad464ff247aa6c5039c9567960787d578c99462 (patch) | |
| tree | bb15543e6cd439e3cb7f029943df1b692e6eb1de /validation/optim/cast-kinds.c | |
| parent | e46af66b3c2b1cb32c6394ac5e6c7ce632d905a9 (diff) | |
| download | sparse-dev-3ad464ff247aa6c5039c9567960787d578c99462.tar.gz | |
cast: optimize away casts to/from pointers
Now that all casts to or from a pointer are between a pointer
and a pointer-sized unsigned integer, from an optimization
PoV, they are all no-ops.
So, optimize them away at simplification time.
Note: casts between pointers (OP_PTRCAST) should also be
optimized away but the original type is used for a
number a things (for example in check_access()) and
can't be optimized away so simply (yet).
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Diffstat (limited to 'validation/optim/cast-kinds.c')
| -rw-r--r-- | validation/optim/cast-kinds.c | 24 |
1 files changed, 8 insertions, 16 deletions
diff --git a/validation/optim/cast-kinds.c b/validation/optim/cast-kinds.c index 5df307bc..b144dc7e 100644 --- a/validation/optim/cast-kinds.c +++ b/validation/optim/cast-kinds.c @@ -88,8 +88,7 @@ vptr_2_int: iptr_2_int: .L8: <entry-point> - ptrtu.64 %r13 <- (64) %arg1 - trunc.32 %r14 <- (64) %r13 + trunc.32 %r14 <- (64) %arg1 ret.32 %r14 @@ -137,8 +136,7 @@ vptr_2_uint: iptr_2_uint: .L22: <entry-point> - ptrtu.64 %r34 <- (64) %arg1 - trunc.32 %r35 <- (64) %r34 + trunc.32 %r35 <- (64) %arg1 ret.32 %r35 @@ -185,8 +183,7 @@ vptr_2_long: iptr_2_long: .L36: <entry-point> - ptrtu.64 %r54 <- (64) %arg1 - ret.64 %r54 + ret.64 %arg1 float_2_long: @@ -232,8 +229,7 @@ vptr_2_ulong: iptr_2_ulong: .L50: <entry-point> - ptrtu.64 %r73 <- (64) %arg1 - ret.64 %r73 + ret.64 %arg1 float_2_ulong: @@ -286,30 +282,26 @@ int_2_iptr: .L66: <entry-point> sext.64 %r94 <- (32) %arg1 - utptr.64 %r95 <- (64) %r94 - ret.64 %r95 + ret.64 %r94 uint_2_iptr: .L68: <entry-point> zext.64 %r98 <- (32) %arg1 - utptr.64 %r99 <- (64) %r98 - ret.64 %r99 + ret.64 %r98 long_2_iptr: .L70: <entry-point> - utptr.64 %r102 <- (64) %arg1 - ret.64 %r102 + ret.64 %arg1 ulong_2_iptr: .L72: <entry-point> - utptr.64 %r105 <- (64) %arg1 - ret.64 %r105 + ret.64 %arg1 vptr_2_iptr: |
