**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'));



{
        return addMonths(d, delta * 3);
    }
    template <typename DateOrTime>
    inline LUTIndex NO_SANITIZE_UNDEFINED addYearsIndex(DateOrTime v, Int64 delta) const
    {
        const Values & values = lut[toLUTIndex(v)];
        auto year = values.year + delta;
        auto month = values.month;
        auto day_of_month = values.day_of_month;
        
        if (unlikely(day_of_month == 29 && month == 2))
            day_of_month = saturateDayOfMonth(year, month, day_of_month);
        return makeLUTIndex(year, month, day_of_month);
    }
    
    inline time_t addYears(time_t t, Int64 delta) const
    {
        auto result_day = addYearsIndex(t, delta);
        const LUTIndex index = findIndex(t);
        const Values & values = lut[index];
        time_t time = t - values.date;
        if (time >= values.time_at_offset_change())
            time += values.amount_of_offset_change();
        if (time >= lut[result_day].time_at_offset_change())
            time -= lut[result_day].amount_of_offset_change();
        return lut[result_day].date + time;
    }
    inline ExtendedDayNum addYears(ExtendedDayNum d, Int64 delta) const