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



WeekModeFlag::NEWYEAR_DAY (3) If not set no meaning
                  If set The week that contains the January 1 is week 1.
                            Week is in range 1-53.
                            And ignore WeekModeFlag::YEAR, WeekModeFlag::FIRST_WEEKDAY
        ISO 8601:1988 means that if the week containing January 1 has
        four or more days in the new year, then it is week 1;
        Otherwise it is the last week of the previous year, and the
        next week is week 1.
    */
    template <typename DateOrTime>
    inline YearWeek toYearWeek(DateOrTime v, UInt8 week_mode) const
    {
        const bool newyear_day_mode = week_mode & static_cast<UInt8>(WeekModeFlag::NEWYEAR_DAY);
        week_mode = check_week_mode(week_mode);
        const bool monday_first_mode = week_mode & static_cast<UInt8>(WeekModeFlag::MONDAY_FIRST);
        bool week_year_mode = week_mode & static_cast<UInt8>(WeekModeFlag::YEAR);
        const bool first_weekday_mode = week_mode & static_cast<UInt8>(WeekModeFlag::FIRST_WEEKDAY);
        const LUTIndex i = toLUTIndex(v);
        
        if (newyear_day_mode)
        {
            return toYearWeekOfNewyearMode(i, monday_first_mode);
        }
        YearWeek yw(toYear(i), 0);
        UInt16 days = 0;
        const auto daynr = makeDayNum(yw.first, toMonth(i), toDayOfMonth(i));
        auto first_daynr = makeDayNum(yw.first, 1, 1);
        
        
        UInt16 weekday = calc_weekday(first_daynr, !monday_first_mode);