[llvm-commits] [llvm] r80710 - in /llvm/trunk/lib: CodeGen/AsmPrinter/DwarfException.cpp Target/ARM/AsmPrinter/ARMAsmPrinter.cpp

Daniel Dunbar daniel at zuster.org
Wed Sep 2 20:10:50 PDT 2009


Hi Jim,

Actually 256 is a better choice. Unless we actively care about the
stack size in some case, 256 is a nice "idiomatic" choice, because of
the interaction with raw_svector_ostream.

The particular issue is that raw_ostream expects to have a certain
size buffer (64 bytes, currently), and so the vector will get
immediately resized (malloc'd) if it is smaller than that. I'm open to
suggestions about how to improve this API though (some obvious options
are make raw_ostream's required buffer size smaller, or make
raw_svector_ostream give a compile time assertion when passed a vector
that is provably too small).

Given the current implementation, 128 is the smallest "safe" choice
which will almost always avoid allocation, but since all uses already
use 256 I was hoping we could make the API "reasonable" by idiom.

 - Daniel

On Tue, Sep 1, 2009 at 11:55 AM, Jim Grosbach<grosbach at apple.com> wrote:
> Author: grosbach
> Date: Tue Sep  1 13:55:08 2009
> New Revision: 80710
>
> URL: http://llvm.org/viewvc/llvm-project?rev=80710&view=rev
> Log:
> reduce size of SmallString to something more reasonable
>
> Modified:
>    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfException.cpp
>    llvm/trunk/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfException.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfException.cpp?rev=80710&r1=80709&r2=80710&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfException.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfException.cpp Tue Sep  1 13:55:08 2009
> @@ -601,7 +601,7 @@
>
>   EmitLabel("exception", SubprogramCount);
>   if (MAI->getExceptionHandlingType() == ExceptionHandling::SjLj) {
> -    SmallString<256> LSDAName;
> +    SmallString<16> LSDAName;
>     raw_svector_ostream(LSDAName) << MAI->getPrivateGlobalPrefix() <<
>       "_LSDA_" << Asm->getFunctionNumber();
>     O << LSDAName.str() << ":\n";
>
> Modified: llvm/trunk/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp?rev=80710&r1=80709&r2=80710&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp (original)
> +++ llvm/trunk/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp Tue Sep  1 13:55:08 2009
> @@ -160,7 +160,7 @@
>       std::string Name;
>
>       if (ACPV->isLSDA()) {
> -        SmallString<256> LSDAName;
> +        SmallString<16> LSDAName;
>         raw_svector_ostream(LSDAName) << MAI->getPrivateGlobalPrefix() <<
>           "_LSDA_" << getFunctionNumber();
>         Name = LSDAName.str();
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>




More information about the llvm-commits mailing list