On Wed, 2020-01-22 at 10:14 +0200, Claudiu Zissulescu wrote:
> Like `packed` type attribute, the ARC's `uncached` type attribute
> needs to be propagated to each member of the struct where it is used.
> Fix this behavior and add a test.
>
> gcc/
> xxxx-xx-xx Claudiu Zissulescu <claz...@synopsys.com>
>
> * config/arc/arc.c (arc_is_uncached_mem_p): Check struct
> attributes if needed.
>
> testsuite/
> xxxx-xx-xx Claudiu Zissulescu <claz...@synopsys.com>
>
> * gcc.target/arc/uncached-3.c: New test.
>
> [ARC] Fix pending errors with uncached type attribute.
>
> uncached type attribute applied to a structure needs to be propagated
> to its members, triggering the .di flag for any access of the struct
> members. Also, any complex CFG manipulation may drop memory pointer
> type attributes, leading to the impossibility to discriminate the
> direct accesses from normal ones. To solve this issue, we will treat
> the direct memory accessed specially via unspecs.
>
> gcc/
> xxxx-xx-xx Claudiu Zissulescu <claz...@synopsys.com>
> Petro Karashchenko <petro.karashche...@ring.com>
>
> * config/arc/arc.c (prepare_move_operands): Generate special
> unspec instruction for direct access.
> (arc_isuncached_mem_p): Propagate uncached attribute to each
> structure member.
> * config/arc/arc.md (VUNSPEC_ARC_LDDI): Define.
> (VUNSPEC_ARC_STDI): Likewise.
> (ALLI): New mode iterator.
> (mALLI): New mode attribute.
> (lddi): New instruction pattern.
> (stdi): Likewise.
> (stdidi_split): Split instruction for architectures which are not
> supporting ll64 option.
> (lddidi_split): Likewise.
>
> testsuite/
> xxxx-xx-xx Claudiu Zissulescu <claz...@synopsys.com>
> Petro Karashchenko <petro.karashche...@ring.com>
>
> * gcc.target/arc/uncached-4.c: New file.
> * gcc.target/arc/uncached-5.c: Likewise.
> * gcc.target/arc/uncached-6.c: Likewise.
> * gcc.target/arc/uncached-7.c: Likewise.
> * gcc.target/arc/uncached-8.c: Likewise.
> * gcc.target/arc/arc.exp (ll64): New predicate.
OK
jeff
>