[COMMITTED 3/3] Add GORI tracing faciltiies.

Aldy Hernandez aldyh@redhat.com
Wed Aug 18 08:35:48 GMT 2021



On 8/18/21 1:31 AM, Andrew MacLeod wrote:
> And this final patch provides tracing in the GORI component.
> 
> This is what I used to find the ABS problem with 
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101938
> 
> The code sequence looked like:
> 
>      <bb 2> :
>      a1_8 = -arg1_7(D);
>      _1 = ABS_EXPR <arg2_9(D)>;
>      a2_10 = -_1;
>      if (a1_8 > a2_10)
>        goto <bb 3>; [INV]
> 
> and the threader was threading a condition later on because the outgoing 
> range for arg2_9 was being compared to   0x80000000 and folded to [0,0] 
> as it didnt think that could happen.
> 
> The GORi trace looked like:
> 
> 237     GORI  outgoing_edge for arg2_9(D) on edge 2->3
> 238     GORI    compute op 2 (a2_10) at if (a1_8 > a2_10)
>          GORI      LHS = _Bool [1, 1], a1_8 = int64 VARYING
>          GORI      Computes a2_10 = int64 [-INF, 9223372036854775806] 
> intersect Known range : int64 VARYING
>          GORI    TRUE : (238)  produces  (a2_10) int64 [-INF, 
> 9223372036854775806]
> 239     GORI    compute op 1 (_1) at a2_10 = -_1;
>          GORI      LHS =int64 [-INF, 9223372036854775806]
>          GORI      Computes _1 = long long int [-INF, 
> -INF][-9223372036854775806, +INF] intersect Known range : long long int 
> VARYING
>          GORI    TRUE : (239) produces  (_1) long long int [-INF, 
> -INF][-9223372036854775806, +INF]
> 240     GORI    compute op 1 (arg2_9(D)) at _1 = ABS_EXPR <arg2_9(D)>;
>          GORI      LHS =long long int [-INF, -INF][-9223372036854775806, 
> +INF]
>          GORI      Computes arg2_9(D) = int64 [-9223372036854775807, 
> +INF] intersect Known range : int64 VARYING
>          GORI    TRUE : (240) produces  (arg2_9(D)) int64 
> [-9223372036854775807, +INF]
>          GORI  TRUE : (237) outgoing_edge (arg2_9(D)) int64 
> [-9223372036854775807, +INF]

Thanks for doing this.  I really like the breakpoint routine.  It has 
always been incredibly tricky debugging through the cascade of GORI and 
range-ops operations.

Do you think it would be useful to put the actual SSA name instead, or 
as well as, "LHS"?  Perhaps something similar to what you do with 
"compute op 1 (x_99)".

Aldy



More information about the Gcc-patches mailing list