Skip to content
Snippets Groups Projects
  • David L. Jones's avatar
    5bbcdd7f
    Add LF_ prefix to LibFunc enums in TargetLibraryInfo. · 5bbcdd7f
    David L. Jones authored
    Summary:
    The LibFunc::Func enum holds enumerators named for libc functions.
    Unfortunately, there are real situations, including libc implementations, where
    function names are actually macros (musl uses "#define fopen64 fopen", for
    example; any other transitively visible macro would have similar effects).
    
    Strictly speaking, a conforming C++ Standard Library should provide any such
    macros as functions instead (via <cstdio>). However, there are some "library"
    functions which are not part of the standard, and thus not subject to this
    rule (fopen64, for example). So, in order to be both portable and consistent,
    the enum should not use the bare function names.
    
    The old enum naming used a namespace LibFunc and an enum Func, with bare
    enumerators. This patch changes LibFunc to be an enum with enumerators prefixed
    with "LF_". (Unfortunately, a scoped enum is not sufficient to override macros.)
    
    These changes are for clang. See https://reviews.llvm.org/D28476 for LLVM.
    
    Reviewers: rsmith
    
    Subscribers: cfe-commits
    
    Differential Revision: https://reviews.llvm.org/D28477
    
    git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@292849 91177308-0d34-0410-b5e6-96231b3b80d8
    5bbcdd7f
    History
    Add LF_ prefix to LibFunc enums in TargetLibraryInfo.
    David L. Jones authored
    Summary:
    The LibFunc::Func enum holds enumerators named for libc functions.
    Unfortunately, there are real situations, including libc implementations, where
    function names are actually macros (musl uses "#define fopen64 fopen", for
    example; any other transitively visible macro would have similar effects).
    
    Strictly speaking, a conforming C++ Standard Library should provide any such
    macros as functions instead (via <cstdio>). However, there are some "library"
    functions which are not part of the standard, and thus not subject to this
    rule (fopen64, for example). So, in order to be both portable and consistent,
    the enum should not use the bare function names.
    
    The old enum naming used a namespace LibFunc and an enum Func, with bare
    enumerators. This patch changes LibFunc to be an enum with enumerators prefixed
    with "LF_". (Unfortunately, a scoped enum is not sufficient to override macros.)
    
    These changes are for clang. See https://reviews.llvm.org/D28476 for LLVM.
    
    Reviewers: rsmith
    
    Subscribers: cfe-commits
    
    Differential Revision: https://reviews.llvm.org/D28477
    
    git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@292849 91177308-0d34-0410-b5e6-96231b3b80d8
Code owners
Assign users and groups as approvers for specific file changes. Learn more.