Skip to content

Commit

Permalink
[AVR] Support zero-sized arguments in defined methods
Browse files Browse the repository at this point in the history
It is sufficient to skip emission of these arguments as we have nothing
to actually pass through the function call.

The AVR-GCC reference has nothing to say about zero-sized arguments,
presumably because C/C++ doesn't support them. This means we don't have
to worry about ABI differences.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294119 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
Dylan McKay committed Feb 5, 2017
1 parent 4329335 commit 10348c4
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions lib/Target/AVR/AVRISelLowering.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -932,6 +932,12 @@ static void analyzeStandardArguments(TargetLowering::CallLoweringInfo *CLI,
bool UsesStack = false;
for (unsigned i = 0, pos = 0, e = Args.size(); i != e; ++i) {
unsigned Size = Args[i];

// If we have a zero-sized argument, don't attempt to lower it.
// AVR-GCC does not support zero-sized arguments and so we need not
// worry about ABI compatibility.
if (Size == 0) continue;

MVT LocVT = (IsCall) ? (*Outs)[pos].VT : (*Ins)[pos].VT;

// If we have plenty of regs to pass the whole argument do it.
Expand Down

0 comments on commit 10348c4

Please sign in to comment.