I constantly feel like I don’t have much experience using LLVM but I hope this isn’t a foolish question.
I had a thought. If I have a struct with three 8bit (or 16bit) variables a, b and c and I want to do an atomic write to one variable. What happens if the target backend doesn’t support atomic writes of that bitsize? It wouldn’t be very safe to read, modify the 8bits then write again since it’s not atomic. Logically the frontend can easily fix this problem by padding or forcing the variables to be a supported size. My question is will I get a compile error if I try to do an unsupported atomic write? Am I able to query for information before I generate code? Is there a list I should check for each backend I want to support? I’m unsure what I should do for good frontend support.