[LLVMbugs] [Bug 14040] New: Formatting difference between `clang++ --version` and macro, __clang_version__

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Sun Oct 7 20:07:23 PDT 2012


http://llvm.org/bugs/show_bug.cgi?id=14040

             Bug #: 14040
           Summary: Formatting difference between `clang++ --version` and
                    macro, __clang_version__
           Product: clang
           Version: trunk
          Platform: Macintosh
        OS/Version: MacOS X
            Status: NEW
          Severity: normal
          Priority: P
         Component: Driver
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: garofgc at gmail.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified


The version, as reported by the command `clang++ --version`, is formatted such
that the revision is parenthesized.

   e.g., "clang version 3.2 (trunk 164372)"

The version, as stored in the macro, __clang_version__, according to the
command `clang++ -dM -E -x c /dev/null | grep __clang_version__`, is formatted
such that the revision is double-parenthesized.

   e.g., "3.2 ((trunk 164372))"

They should be defined such that the latter is a substring of the former so the
following pseudocode can be used to identify an exact compiler match:

   if (!!strstr(`clang++ --version`, __clang_version__)) {/* match found */}

Otherwise, one must write special-case code that makes assumptions about the
string format, parses the string, and performs sub-matching. 

It is also inconsistent with the behavior of other compilers, e.g., GCC and
MSVC.  

   `gcc -dM -E -x c /dev/null | grep __VERSION__` is a substring of the output
from `g++ --version`

   The stringized _MSC_FULL_VER macro is a substring of the output from
`cl.exe`

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list