[polly] r271128 - Determination of statements that contain matrix multiplication

Mehdi Amini via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 2 08:20:12 PDT 2016


> On Jun 2, 2016, at 5:46 AM, Michael Kruse <llvm-commits at meinersbur.de> wrote:
> 
> 2016-05-31 23:40 GMT+02:00 Mehdi Amini via llvm-commits
> <llvm-commits at lists.llvm.org>:
> 
>>> +/// @brief Circular shift of output dimensions of the integer map.
>>> +///
>>> +/// @param IslMap The isl map to be modified.
>>> +static __isl_give isl_map *circularShiftOutputDims(__isl_take isl_map *IslMap) {
>>> +  auto InputDimsId = isl_map_get_tuple_id(IslMap, isl_dim_in);
>>> +  auto DimNum = isl_map_dim(IslMap, isl_dim_out);
>>> +  IslMap = isl_map_move_dims(IslMap, isl_dim_in, 0, isl_dim_out, DimNum - 1, 1);
>>> +  IslMap = isl_map_move_dims(IslMap, isl_dim_out, 0, isl_dim_in, 0, 1);
>>> +  return isl_map_set_tuple_id(IslMap, isl_dim_in, InputDimsId);
>>> +}
>> 
>> Coverity is reporting a potential issue here:
>> 
>> *** CID 1356130:  Insecure data handling  (INTEGER_OVERFLOW)
>> /tools/polly/lib/Transform/ScheduleOptimizer.cpp: 469 in circularShiftOutputDims(isl_map *)()
>> 463     /// @param IslMap The isl map to be modified.
>> 464     static __isl_give isl_map *circularShiftOutputDims(__isl_take isl_map *IslMap) {
>> 465       auto InputDimsId = isl_map_get_tuple_id(IslMap, isl_dim_in);
>> 466       auto DimNum = isl_map_dim(IslMap, isl_dim_out);
>> 467       IslMap = isl_map_move_dims(IslMap, isl_dim_in, 0, isl_dim_out, DimNum - 1, 1);
>> 468       IslMap = isl_map_move_dims(IslMap, isl_dim_out, 0, isl_dim_in, 0, 1);
>>>>>    CID 1356130:  Insecure data handling  (INTEGER_OVERFLOW)
>>>>>    Overflowed or truncated value (or a value computed from an overflowed or truncated value) "isl_map_set_tuple_id(IslMap, isl_dim_in, InputDimsId)" used as return value.
>> 469       return isl_map_set_tuple_id(IslMap, isl_dim_in, InputDimsId);
>> 470     }
>> 
>> 
> 
> Can you explain the message? The only integer used in that line is
> isl_dim_in, and its a constant as used elsewhere as well.
> 
> I find a different possible underflow with the expression "DimNum -
> 1", as DimNum is unsigned. Might happen if the map has 0 range
> dimensions which probably never happens.

Yes it seems that it is what Coverity is reporting, feel free to ignore if you think it's fine.

-- 
Mehdi



More information about the llvm-commits mailing list