[PATCH] Implement low-level ARM ldrex/strex intrinsics

Manish Verma manish.verma at arm.com
Mon Jul 15 02:52:49 PDT 2013


Hi Tim,

Your mention of RVCT in your first email caught my attention. The difference
between the declaration of the intrinsics in the two compilers, is the
missing "volatile" attribute on the input address argument.

Looking at the implementation and test-cases, it seems to me that the
following code example, isn't expected to work with clang.

int foo(void)
{
    int loc = 0xff;
    return __ldrex((volatile char *)loc);
}

I was wondering if you could expand on this or alternatively, let me know if
I misunderstood your patches.

Regards,
Manish

> -----Original Message-----
> From: cfe-commits-bounces at cs.uiuc.edu [mailto:cfe-commits-
> bounces at cs.uiuc.edu] On Behalf Of Tim Northover
> Sent: 13 July 2013 16:17
> To: Tim Northover
> Cc: llvm-commits; cfe-commits at cs.uiuc.edu
> Subject: Re: [PATCH] Implement low-level ARM ldrex/strex intrinsics
> 
> > The attached patches implement three new (overloaded) intrinsics
> for ARM targets.
> 
> I don't want to short-circuit or avoid the discussion about whether
> we
> should actually add these, but I've managed to remove the nasty
> DAGCombining bits in favour of a few much simpler patterns. Probably
> best that anyone else who does look at the code isn't looking at a
> stale version.
> 
> Think I'll try to start using Phabricator again next time.
> 
> Tim.







More information about the llvm-commits mailing list