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: [email protected]
        ReportedBy: [email protected]
                CC: [email protected]
    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.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to