diff options
| author | Bill Wendling <isanbard@gmail.com> | 2010-02-05 00:17:02 +0000 |
|---|---|---|
| committer | Bill Wendling <isanbard@gmail.com> | 2010-02-05 00:17:02 +0000 |
| commit | 744f579b63987854ac1b3f2f9c8d2659c5b5ee40 (patch) | |
| tree | ab686f0fb1135764e9ab1419b4172a8fce8e84e2 /lib/CodeGen/AsmPrinter/AsmPrinter.cpp | |
| parent | fc375d22001d27ba6d22db67821da057e36f7f89 (diff) | |
An empty global constant (one of size 0) may have a section immediately
following it. However, the EmitGlobalConstant method wasn't emitting a body for
the constant. The assembler doesn't like that. Before, we were generating this:
.zerofill __DATA, __common, __cmd, 1, 3
This fix puts us back to that semantic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95336 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/AsmPrinter/AsmPrinter.cpp')
| -rw-r--r-- | lib/CodeGen/AsmPrinter/AsmPrinter.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp index 8456709dba..3132691159 100644 --- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -1120,6 +1120,7 @@ static void EmitGlobalConstantLargeInt(const ConstantInt *CI, void AsmPrinter::EmitGlobalConstant(const Constant *CV, unsigned AddrSpace) { if (isa<ConstantAggregateZero>(CV) || isa<UndefValue>(CV)) { uint64_t Size = TM.getTargetData()->getTypeAllocSize(CV->getType()); + if (Size == 0) Size = 1; // An empty "_foo:" followed by a section is undef. return OutStreamer.EmitZeros(Size, AddrSpace); } |
