[cfe-dev] [llvm-dev] Semantics of __CFConstantStringClassReference variable (clang crash in PR38615)
Reid Kleckner via cfe-dev
cfe-dev at lists.llvm.org
Fri Aug 24 13:56:55 PDT 2018
What exactly is failing? The cast to GlobalValue? If so, try stripping
casts, as in this existing code:
setDSOLocal(cast<llvm::GlobalValue>(Ret->stripPointerCasts()));
On Fri, Aug 24, 2018 at 1:50 PM Manoj Gupta via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
> + llvm-dev .
>
> Any ideas about the semantics of "__CFConstantStringClassReference" and
> the best way to fix the clang crash issue.
>
> Thanks,
> Manoj
>
> On Tue, Aug 21, 2018 at 5:08 PM Manoj Gupta <manojgupta at google.com> wrote:
>
>> Hi,
>>
>> I am looking for some help regarding a clang crash when building
>> opencflite. The root cause of the crash is because clang tries to create a
>> GlobalValue "__CFConstantStringClassReference" but a variable of same name
>> is also present in the source file.
>>
>> Crash location:
>>
>> https://github.com/llvm-mirror/clang/blob/master/lib/CodeGen/CodeGenModule.cpp#L4058
>>
>> // If we don't already have it, get __CFConstantStringClassReference.
>> if (!CFConstantStringClassRef) {
>> llvm::Type *Ty = getTypes().ConvertType(getContext().IntTy);
>> Ty = llvm::ArrayType::get(Ty, 0);
>> llvm::GlobalValue *GV = cast<llvm::GlobalValue>(
>> CreateRuntimeVariable(Ty, "__CFConstantStringClassReference"));
>> // Crashes here
>>
>> Opencflite also declares __CFConstantStringClassReference as a variable,
>> https://github.com/nevali/opencflite/blob/03999700cf3b79975ae2f2e5f4100ea7096acb3a/CFInternal.h#L364
>> :
>>
>> extern int __CFConstantStringClassReference[];
>>
>> I do not know the semantics of the name __CFConstantStringClassReference.
>> Is this a reserved name and should opencflite not be declaring this
>> variable ? If so, appreciate any advice on how to fix the offending code.
>>
>> Or is this a bug in clang?
>>
>> For reference, r327993 (https://reviews.llvm.org/rL327993) introduced
>> this code.
>>
>> Author: Rafael Espindola <rafael.espindola at gmail.com>
>> AuthorDate: Tue Mar 20 15:48:00 2018 +0000
>>
>> Set dso_local for CFConstantStringClassReference.
>>
>> This one cannot use setGVProperties since it has special logic for
>> when it is dllimport or not.
>> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@*327993*
>> 91177308-0d34-0410-b5e6-96231b3b80d8
>>
>> Thanks,
>> Manoj
>>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20180824/2b5bfb2b/attachment.html>
More information about the cfe-dev
mailing list