PR16752[PATCH]: 'mode' attribute for unusual targets doesn't work properly.
Stepan Dyatkovskiy
stpworld at narod.ru
Wed Sep 18 02:12:02 PDT 2013
Committed in r190926.
-Stepan.
Eli Friedman wrote:
> Sorry about the delayed response.
>
> XC mode is not valid on PPC; if there's a test trying to use it, the
> test is wrong. Please just fix the test.
>
> -Eli
>
>
> On Tue, Sep 17, 2013 at 11:54 AM, Stepan Dyatkovskiy <stpworld at narod.ru
> <mailto:stpworld at narod.ru>> wrote:
>
> Hi Eli,
> I have to resend you PR16752 fix. Since I had changed it. The
> previous one causes failures on some buildbots.
> This fix also contains customization for PPC case:
> For 'XC' mode (96 bit float) PPC uses 128 bit fp type.
>
> -Stepan.
>
> Eli Friedman wrote:
>
> LGTM.
>
> -Eli
>
>
> On Mon, Sep 9, 2013 at 5:04 AM, Stepan Dyatkovskiy
> <stpworld at narod.ru <mailto:stpworld at narod.ru>
> <mailto:stpworld at narod.ru <mailto:stpworld at narod.ru>>> wrote:
>
> Since I had split the patch and committed only ASTContext and
> TargetInfo getIntTypeByWidth and friends, there is the
> second patch,
> that fixes PR16752 itself.
>
> Please, find it in attachment for review.
>
> -Stepan.
> Eli Friedman wrote:
>
> On Tue, Sep 3, 2013 at 2:16 AM, Stepan Dyatkovskiy
> <stpworld at narod.ru <mailto:stpworld at narod.ru>
> <mailto:stpworld at narod.ru <mailto:stpworld at narod.ru>>
> <mailto:stpworld at narod.ru <mailto:stpworld at narod.ru>
> <mailto:stpworld at narod.ru <mailto:stpworld at narod.ru>>>> wrote:
>
> Hi Eli,
> Sorry for latency.
> As you remember this patch should correct 'mode' attr
> implementation. You proposed to use generic way of
> type
> detection
> for each target: just scan for target types and
> select one with
> suitable width.
>
> Unfortunately I can't commit patch with generic
> implementation. I
> got test failure for clang. And I expect more
> failures for
> another
> targets. The reason is next.
>
> The target could still keep mode unsupported even
> if it has
> type of
> suitable width. I mean the next.
> For example this string should cause error for i686
> machines (128
> bit float):
> typedef float f128ibm __attribute__
> ((mode (TF)));
> But in case of generic approach for all targets it
> would be
> passed.
> In this case virtual functions allows to implement
> exceptions.
>
>
> The generic implementation is still essentially
> correct; the the
> issue
> is that getLongDoubleWidth() isn't actually the right
> value to
> check.
> It returns "sizeof(long double) * 8", not the actual
> width of the
> underlying float format. You should be able to work
> around this by
> checking getLongDoubleFormat() instead of
> getLongDoubleWidth().
>
> In this case 'getIntTypeByWidth' may be a bit
> confusing name.
> Instead it is supposed to return type for some
> particular
> mode, not
> by width. Something like
> getInt/RealTypeForMode(width, sign).
> Though, currently I kept the original name.
>
>
> If you want to change it, that's fine.
>
> -Eli
>
>
>
>
>
More information about the cfe-commits
mailing list