diff options
| author | John McCall <rjmccall@apple.com> | 2011-08-25 23:04:34 +0000 |
|---|---|---|
| committer | John McCall <rjmccall@apple.com> | 2011-08-25 23:04:34 +0000 |
| commit | a5efa7386ad9920e969ba4f155de3b40f8118cae (patch) | |
| tree | cfa90d732233b92aab897950fdd571c28cf9dbaa /clang/lib/CodeGen/CodeGenFunction.h | |
| parent | 5cc730cdef97d98df0b33a21a6b9568b9cddccb1 (diff) | |
| download | bcm5719-llvm-a5efa7386ad9920e969ba4f155de3b40f8118cae.tar.gz bcm5719-llvm-a5efa7386ad9920e969ba4f155de3b40f8118cae.zip | |
Track whether an AggValueSlot is potentially aliased, and do not
emit call results into potentially aliased slots. This allows us
to properly mark indirect return slots as noalias, at the cost
of requiring an extra memcpy when assigning an aggregate call
result into a l-value. It also brings us into compliance with
the x86-64 ABI.
llvm-svn: 138599
Diffstat (limited to 'clang/lib/CodeGen/CodeGenFunction.h')
| -rw-r--r-- | clang/lib/CodeGen/CodeGenFunction.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CodeGenFunction.h b/clang/lib/CodeGen/CodeGenFunction.h index 2d47301ec51..36dcffcd4c0 100644 --- a/clang/lib/CodeGen/CodeGenFunction.h +++ b/clang/lib/CodeGen/CodeGenFunction.h @@ -1466,7 +1466,8 @@ public: AggValueSlot CreateAggTemp(QualType T, const Twine &Name = "tmp") { return AggValueSlot::forAddr(CreateMemTemp(T, Name), T.getQualifiers(), AggValueSlot::IsNotDestructed, - AggValueSlot::DoesNotNeedGCBarriers); + AggValueSlot::DoesNotNeedGCBarriers, + AggValueSlot::IsNotAliased); } /// Emit a cast to void* in the appropriate address space. |

