Displaying 2 results from an estimated 2 matches for "atomic_word_t".
2015 Nov 10
4
SROA and volatile memcpy/memset
...t have
anything to do with devices.) SROA expanded this into a series of
volatile loads and stores, which cannot be coalesced back into fewer
instructions. This is clearly worse than doing the copy and then the
member overwrite.
--- test.c ---
typedef struct {
volatile unsigned int value;
} atomic_word_t;
typedef union {
struct {
unsigned char state;
unsigned char priority;
};
atomic_word_t atomic;
unsigned int full;
} mystruct_t;
mystruct_t a;
unsigned int foo(void) {
mystruct_t x;
mystruct_t y;
x.full = a.atomic.value;
y = x;
y.priority = 7;
return y....
2015 Nov 10
2
SROA and volatile memcpy/memset
Hi,
I have a customer testcase where SROA splits a volatile memcpy and we
end up generating bad code[1]. While this looks like a bug, simply
preventing SROA from splitting volatile memory intrinsics causes
basictest.ll for SROA to fail. Not only that, but it also seems like
handling of volatile memory transfers was done with some intent.
What are the design decisions in SROA regarding