[llvm-commits] [llvm] r83417 - /llvm/trunk/lib/Support/Triple.cpp

Chris Lattner clattner at apple.com
Thu Oct 8 11:05:48 PDT 2009


On Oct 8, 2009, at 11:02 AM, Tanya M. Lattner wrote:

>
> Chris can you approve or deny this patch?
>
> Also, are both patches required or just the last one?

yes approved, both patches are required.

-Chris

>
> Thanks,
> Tanya
>
> On Tue, 6 Oct 2009, Jeffrey Yasskin wrote:
>
>> Here's the real twine fix, in case you want it for the 2.6 branch.
>>
>> On Tue, Oct 6, 2009 at 2:45 PM, Jeffrey Yasskin  
>> <jyasskin at google.com> wrote:
>>> Author: jyasskin
>>> Date: Tue Oct  6 16:45:26 2009
>>> New Revision: 83417
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=83417&view=rev
>>> Log:
>>> r83391 was completely broken since Twines keep references to their  
>>> inputs, and
>>> some of the inputs were temporaries.  Here's a real fix for the  
>>> miscompilation.
>>> Thanks to sabre for pointing out the problem.
>>>
>>> Modified:
>>>    llvm/trunk/lib/Support/Triple.cpp
>>>
>>> Modified: llvm/trunk/lib/Support/Triple.cpp
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/Triple.cpp?rev=83417&r1=83416&r2=83417&view=diff
>>>
>>> = 
>>> = 
>>> = 
>>> = 
>>> = 
>>> = 
>>> = 
>>> = 
>>> = 
>>> = 
>>> ====================================================================
>>> --- llvm/trunk/lib/Support/Triple.cpp (original)
>>> +++ llvm/trunk/lib/Support/Triple.cpp Tue Oct  6 16:45:26 2009
>>> @@ -9,6 +9,7 @@
>>>
>>>  #include "llvm/ADT/Triple.h"
>>>
>>> +#include "llvm/ADT/SmallString.h"
>>>  #include "llvm/ADT/Twine.h"
>>>  #include <cassert>
>>>  #include <cstring>
>>> @@ -390,10 +391,14 @@
>>>  }
>>>
>>>  void Triple::setArchName(const StringRef &Str) {
>>> -  // Work around a miscompilation bug in gcc 4.0.3.
>>> -  Twine a = getVendorName() + "-" + getOSAndEnvironmentName();
>>> -  Twine b = Str + "-" + a;
>>> -  setTriple(b);
>>> +  // Work around a miscompilation bug for Twines in gcc 4.0.3.
>>> +  SmallString<64> Triple;
>>> +  Triple += Str;
>>> +  Triple += "-";
>>> +  Triple += getVendorName();
>>> +  Triple += "-";
>>> +  Triple += getOSAndEnvironmentName();
>>> +  setTriple(Triple.str());
>>>  }
>>>
>>>  void Triple::setVendorName(const StringRef &Str) {
>>>
>>>
>>> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>>
>>
> _______________________________________________
> 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