[llvm] r183216 - Preserve const correctness.

Benjamin Kramer benny.kra at gmail.com
Tue Jun 4 09:37:18 PDT 2013


On 04.06.2013, at 18:09, dag at cray.com wrote:

> Benjamin Kramer <benny.kra at googlemail.com> writes:
> 
>> Author: d0k
>> Date: Tue Jun  4 04:09:15 2013
>> New Revision: 183216
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=183216&view=rev
>> Log:
>> Preserve const correctness.
>> 
>> GCC complains about casting away const.
>> 
>> Modified:
>>    llvm/trunk/lib/ExecutionEngine/RTDyldMemoryManager.cpp
>> 
>> Modified: llvm/trunk/lib/ExecutionEngine/RTDyldMemoryManager.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/RTDyldMemoryManager.cpp?rev=183216&r1=183215&r2=183216&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/ExecutionEngine/RTDyldMemoryManager.cpp (original)
>> +++ llvm/trunk/lib/ExecutionEngine/RTDyldMemoryManager.cpp Tue Jun  4 04:09:15 2013
>> @@ -45,11 +45,11 @@ extern "C" void __register_frame(void*);
>> 
>> static const char *processFDE(const char *Entry) {
>>   const char *P = Entry;
>> -  uint32_t Length = *((uint32_t*)P);
>> +  uint32_t Length = *((const uint32_t *)P);
>>   P += 4;
>> -  uint32_t Offset = *((uint32_t*)P);
>> +  uint32_t Offset = *((const uint32_t *)P);
>>   if (Offset != 0)
>> -    __register_frame((void*)Entry);
>> +    __register_frame(const_cast<char *>(Entry));
> 
> The patch LGTM, but I wonder about this last statement.  Should Entry
> really be const if it is passed to a function taking non-const.  Your
> patch should be able to go ahead.  I'm wondering about the larger
> question and whether this needs investigation.

__register_frame doesn't actually write to the pointer despite being declared as non-const. This is probably a historical wart in libgcc's interface.

 - Ben



More information about the llvm-commits mailing list