[llvm] r176173 - In GCC 4.7, function names are now forbidden from .gcda files. Support this by

Nick Lewycky nlewycky at google.com
Wed Feb 27 00:29:24 PST 2013


On 27 February 2013 00:09, Alexey Samsonov <samsonov at google.com> wrote:

> Hi!
>
> I see the following error on our Windows buildbot, can it be caused by
> your change?
>

Yep, that's my fault. Should be fixed in r176176!

3> GCDAProfiling.c 3>..\..\..\llvm\runtime\libprofile\GCDAProfiling.c(172):
> error C2275: 'uint32_t' : illegal use of this type as an expression 3>
> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\stdint.h(23)
> : see declaration of 'uint32_t'
> 3>..\..\..\llvm\runtime\libprofile\GCDAProfiling.c(172): error C2146:
> syntax error : missing ';' before identifier 'len'
> 3>..\..\..\llvm\runtime\libprofile\GCDAProfiling.c(172): error C2065: 'len'
> : undeclared identifier
> 3>..\..\..\llvm\runtime\libprofile\GCDAProfiling.c(174): error C2065: 'len'
> : undeclared identifier
> 3>..\..\..\llvm\runtime\libprofile\GCDAProfiling.c(175): error C2065: 'len'
> : undeclared identifier 4> GCDAProfiling.c
> 4>..\..\..\llvm\runtime\libprofile\GCDAProfiling.c(172): error C2275:
> 'uint32_t' : illegal use of this type as an expression 4> C:\Program Files
> (x86)\Microsoft Visual Studio 10.0\VC\include\stdint.h(23) : see
> declaration of 'uint32_t'
> 4>..\..\..\llvm\runtime\libprofile\GCDAProfiling.c(172): error C2146:
> syntax error : missing ';' before identifier 'len'
> 4>..\..\..\llvm\runtime\libprofile\GCDAProfiling.c(172): error C2065: 'len'
> : undeclared identifier
> 4>..\..\..\llvm\runtime\libprofile\GCDAProfiling.c(174): error C2065: 'len'
> : undeclared identifier
> 4>..\..\..\llvm\runtime\libprofile\GCDAProfiling.c(175): error C2065: 'len'
> : undeclared identifier
>
>
> On Wed, Feb 27, 2013 at 10:22 AM, Nick Lewycky <nicholas at mxc.ca> wrote:
>
>> Author: nicholas
>> Date: Wed Feb 27 00:22:56 2013
>> New Revision: 176173
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=176173&view=rev
>> Log:
>> In GCC 4.7, function names are now forbidden from .gcda files. Support
>> this by
>> passing a null pointer to the function name in to GCDAProfiling, and add
>> another
>> switch onto GCOVProfiling.
>>
>> Modified:
>>     llvm/trunk/include/llvm/Transforms/Instrumentation.h
>>     llvm/trunk/lib/Transforms/Instrumentation/GCOVProfiling.cpp
>>     llvm/trunk/runtime/libprofile/GCDAProfiling.c
>>
>> Modified: llvm/trunk/include/llvm/Transforms/Instrumentation.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/Instrumentation.h?rev=176173&r1=176172&r2=176173&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Transforms/Instrumentation.h (original)
>> +++ llvm/trunk/include/llvm/Transforms/Instrumentation.h Wed Feb 27
>> 00:22:56 2013
>> @@ -34,7 +34,8 @@ ModulePass *createPathProfilerPass();
>>  ModulePass *createGCOVProfilerPass(bool EmitNotes = true, bool EmitData
>> = true,
>>                                     bool Use402Format = false,
>>                                     bool UseExtraChecksum = false,
>> -                                   bool NoRedZone = false);
>> +                                   bool NoRedZone = false,
>> +                                   bool NoFunctionNamesInData = false);
>>
>>  // Insert AddressSanitizer (address sanity checking) instrumentation
>>  FunctionPass *createAddressSanitizerFunctionPass(
>>
>> Modified: llvm/trunk/lib/Transforms/Instrumentation/GCOVProfiling.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/GCOVProfiling.cpp?rev=176173&r1=176172&r2=176173&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/Instrumentation/GCOVProfiling.cpp (original)
>> +++ llvm/trunk/lib/Transforms/Instrumentation/GCOVProfiling.cpp Wed Feb
>> 27 00:22:56 2013
>> @@ -45,14 +45,16 @@ namespace {
>>      static char ID;
>>      GCOVProfiler()
>>          : ModulePass(ID), EmitNotes(true), EmitData(true),
>> Use402Format(false),
>> -          UseExtraChecksum(false), NoRedZone(false) {
>> +          UseExtraChecksum(false), NoRedZone(false),
>> +          NoFunctionNamesInData(false) {
>>        initializeGCOVProfilerPass(*PassRegistry::getPassRegistry());
>>      }
>> -    GCOVProfiler(bool EmitNotes, bool EmitData, bool use402Format,
>> -                 bool useExtraChecksum, bool NoRedZone_)
>> +    GCOVProfiler(bool EmitNotes, bool EmitData, bool Use402Format,
>> +                 bool UseExtraChecksum, bool NoRedZone,
>> +                 bool NoFunctionNamesInData)
>>          : ModulePass(ID), EmitNotes(EmitNotes), EmitData(EmitData),
>> -          Use402Format(use402Format), UseExtraChecksum(useExtraChecksum),
>> -          NoRedZone(NoRedZone_) {
>> +          Use402Format(Use402Format), UseExtraChecksum(UseExtraChecksum),
>> +          NoRedZone(NoRedZone),
>> NoFunctionNamesInData(NoFunctionNamesInData) {
>>        assert((EmitNotes || EmitData) && "GCOVProfiler asked to do
>> nothing?");
>>        initializeGCOVProfilerPass(*PassRegistry::getPassRegistry());
>>      }
>> @@ -100,6 +102,7 @@ namespace {
>>      bool Use402Format;
>>      bool UseExtraChecksum;
>>      bool NoRedZone;
>> +    bool NoFunctionNamesInData;
>>
>>      Module *M;
>>      LLVMContext *Ctx;
>> @@ -113,9 +116,10 @@ INITIALIZE_PASS(GCOVProfiler, "insert-gc
>>  ModulePass *llvm::createGCOVProfilerPass(bool EmitNotes, bool EmitData,
>>                                           bool Use402Format,
>>                                           bool UseExtraChecksum,
>> -                                         bool NoRedZone) {
>> +                                         bool NoRedZone,
>> +                                         bool NoFunctionNamesInData) {
>>    return new GCOVProfiler(EmitNotes, EmitData, Use402Format,
>> UseExtraChecksum,
>> -                          NoRedZone);
>> +                          NoRedZone, NoFunctionNamesInData);
>>  }
>>
>>  namespace {
>> @@ -664,7 +668,9 @@ void GCOVProfiler::insertCounterWriteout
>>          intptr_t ident = reinterpret_cast<intptr_t>(I->second);
>>          Builder.CreateCall2(EmitFunction,
>>                              Builder.getInt32(ident),
>> -                            Builder.CreateGlobalStringPtr(SP.getName()));
>> +                            NoFunctionNamesInData ?
>> +
>>  Constant::getNullValue(Builder.getInt8PtrTy()) :
>> +
>>  Builder.CreateGlobalStringPtr(SP.getName()));
>>
>>          GlobalVariable *GV = I->first;
>>          unsigned Arcs =
>>
>> Modified: llvm/trunk/runtime/libprofile/GCDAProfiling.c
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/runtime/libprofile/GCDAProfiling.c?rev=176173&r1=176172&r2=176173&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/runtime/libprofile/GCDAProfiling.c (original)
>> +++ llvm/trunk/runtime/libprofile/GCDAProfiling.c Wed Feb 27 00:22:56 2013
>> @@ -162,17 +162,22 @@ void llvm_gcda_increment_indirect_counte
>>
>>  void llvm_gcda_emit_function(uint32_t ident, const char *function_name) {
>>  #ifdef DEBUG_GCDAPROFILING
>> -  printf("llvmgcda: function id=%x\n", ident);
>> +  printf("llvmgcda: function id=%x name=%s\n", ident,
>> +         function_name ? function_name : "NULL");
>>  #endif
>>    if (!output_file) return;
>>
>>    /* function tag */
>>    fwrite("\0\0\0\1", 4, 1, output_file);
>> -  write_int32(3 + 1 + length_of_string(function_name));
>> +  uint32_t len = 3;
>> +  if (function_name)
>> +    len += 1 + length_of_string(function_name);
>> +  write_int32(len);
>>    write_int32(ident);
>>    write_int32(0);
>>    write_int32(0);
>> -  write_string(function_name);
>> +  if (function_name)
>> +    write_string(function_name);
>>  }
>>
>>  void llvm_gcda_emit_arcs(uint32_t num_counters, uint64_t *counters) {
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>
>
>
> --
> Alexey Samsonov, MSK
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130227/24190316/attachment.html>


More information about the llvm-commits mailing list