DavidKreitzer added a comment.
The example Aaron sent in email is a good one:
void func(int, int, int, int) __attribute__((no_caller_saved_registers,
cdecl));
int main() {
void (*fp)(int, int, int, int) __attribute__((cdecl)) = func;
func(1, 2, 3, 4);
fp(1, 2, 3, 4); // Not th
DavidKreitzer added a subscriber: DavidKreitzer.
DavidKreitzer added a comment.
Hi Michael,
I think the Intel Intrinsics reference and the Intel Compiler are in error and
that this is the right fix for the LLVM headers. (I'll follow up to get the
Intel Intrinsics reference & Intel Compiler fixe
DavidKreitzer added a comment.
From an MCU ABI perspective, yes, returning an empty struct is equivalent to
returning void.
http://reviews.llvm.org/D16808
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman
DavidKreitzer added a comment.
Denis, can you please explain your rationale for choosing to return 0-sized
aggregates in memory for MCU? It doesn't match gcc behavior. For example,
int g;
union U {} u;
union U f(int a, int b, int c) { g = a + b + c; return u; }
void f1() { f(1, 2, 3); }
DavidKreitzer added a comment.
Looks good, Alexey! I have no further comments.
- Dave
http://reviews.llvm.org/D14864
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
DavidKreitzer added a comment.
Thanks, Alexey! I think this is an improvement.
I don't know if anyone else has an opinion on the name of the new class, but I
would prefer X86 over I386, possibly even MCUX86_32TargetInfo.
Thanks,
- Dave
http://reviews.llvm.org/D14864
__
DavidKreitzer added a comment.
Hi Alexey,
Did you consider adding a new class for the MCU target info, e.g.
X86MCUTargetInfo? The more MCU-specific stuff that gets added here, the more it
makes sense to pull it out into its own class. We already have line 3398-3401
& 3650-3653. We are also go
DavidKreitzer added inline comments.
Comment at: lib/CodeGen/TargetInfo.cpp:1239
@@ +1238,3 @@
+// The MCU psABI allows passing parameters in-reg even if there are
+// earlier, parameters that are passed on the stack. Also,
+// it does not allow passing >8-byte structs