]> granicus.if.org Git - clang/commit
Currently __builtin_annotation() only annotates an i32.
authorJulien Lerouge <jlerouge@apple.com>
Sat, 28 Apr 2012 17:39:16 +0000 (17:39 +0000)
committerJulien Lerouge <jlerouge@apple.com>
Sat, 28 Apr 2012 17:39:16 +0000 (17:39 +0000)
commite59392176c2369df2bdd11b7786cb38abac00198
tree5f166c1ff87306d850f0fd2ee5569b4b41d04186
parentbddc7e5ed3982b5845e4fbb5d9bc7b7431c35a4f
Currently __builtin_annotation() only annotates an i32.

        i32 __builtin_annotation(i32, string);

Applying it to i64 (e.g., long long) generates the following IR.

        trunc i64 {{.*}} to i32
        call i32 @llvm.annotation.i32
        zext i32 {{.*}} to i64

The redundant truncation and extension make the result difficult to use.

This patch makes __builtin_annotation() generic.

        type __builtin_annotation(type, string);

For the i64 example, it simplifies the generated IR to:

        call i64 @llvm.annotation.i64

Patch by Xi Wang!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155764 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/Basic/Builtins.def
include/clang/Basic/DiagnosticSemaKinds.td
lib/Sema/SemaChecking.cpp
test/CodeGen/annotations-builtin.c
test/Sema/annotate.c