**Describe the bug**

```
    /// We count all hour-length intervals, unrelated to offset changes.
    inline time_t toRelativeHourNum(time_t t) const
    {
        if (t >= 0 && offset_is_whole_number_of_hours_during_epoch)
            return t / 3600;

        /// Assume that if offset was fractional, then the fraction is the same as at the beginning of epoch.
        /// NOTE This assumption is false for "Pacific/Pitcairn" and "Pacific/Kiritimati" time zones.
        return (t + DATE_LUT_ADD + 86400 - offset_at_start_of_epoch) / 3600 - (DATE_LUT_ADD / 3600);
    }

    template <typename DateOrTime>
    inline time_t toRelativeHourNum(DateOrTime v) const
    {
        return toRelativeHourNum(lut[toLUTIndex(v)].date);
    }

```
the code snippet is in DateLUTImpl.h 

lut[toLUTIndex(v)].date is Int64.
below is type define in mac OS.
```
typedef long long               int64_t;
typedef __darwin_time_t         time_t;
typedef long                    __darwin_time_t; 
```

function overload will cause  infinite loop

**Does it reproduce on recent release?**

It's a portability issue


**How to reproduce**

execute SQL on clickhouse which build on macOS

select toRelativeHourNum(toDate('2020-10-01'));



inline time_t toStartOfFiveMinute(time_t t) const { return roundDown(t, 300); }
    inline time_t toStartOfFifteenMinutes(time_t t) const { return roundDown(t, 900); }
    inline time_t toStartOfTenMinutes(time_t t) const
    {
        if (t >= 0 && offset_is_whole_number_of_hours_during_epoch)
            return t / 600 * 600;
        
        Int64 date = find(t).date;
        return date + (t - date) / 600 * 600;
    }
    
    inline time_t toStartOfHour(time_t t) const
    {
        if (t >= 0 && offset_is_whole_number_of_hours_during_epoch)
            return t / 3600 * 3600;
        Int64 date = find(t).date;
        return date + (t - date) / 3600 * 3600;
    }
    /** Number of calendar day since the beginning of UNIX epoch (1970-01-01 is zero)
      * We use just two bytes for it. It covers the range up to 2105 and slightly more.
      *
      * This is "calendar" day, it itself is independent of time zone
      * (conversion from/to unix timestamp will depend on time zone,
      *  because the same calendar day starts/ends at different timestamps in different time zones)
      */
    inline time_t fromDayNum(DayNum d) const { return lut[toLUTIndex(d)].date; }
    inline time_t fromDayNum(ExtendedDayNum d) const { return lut[toLUTIndex(d)].date; }
    template <typename DateOrTime>
    inline time_t toDate(DateOrTime v) const { return lut[toLUTIndex(v)].date; }