From 950e9f83ea761d7495a92f46c2b0b8ee4c54b896 Mon Sep 17 00:00:00 2001
From: Reid Spencer
Parameter attributes consist of an at sign (@) followed by either a single - keyword or a comma separate list of keywords enclosed in parentheses. For +
Parameter attributes are simple keywords that follow the type specified. If + multiple parameter attributes are needed, they are space separated. For example:
- %someFunc = i16 @zext (i8 @(sext) %someParam) - %someFunc = i16 @zext (i8 @zext %someParam)+ %someFunc = i16 (i8 sext %someParam) zext + %someFunc = i16 (i8 zext %someParam) zext
Note that the two function types above are unique because the parameter has - a different attribute (@sext in the first one, @zext in the second).
+ a different attribute (sext in the first one, zext in the second). Also note + that the attribute for the function result (zext) comes immediately after the + argument list.Currently, only the following parameter attributes are defined:
The current motivation for parameter attributes is to enable the sign and zero extend information necessary for the C calling convention to be passed - from the front end to LLVM. The @zext and @sext attributes + from the front end to LLVM. The zext and sext attributes are used by the code generator to perform the required extension. However, parameter attributes are an orthogonal feature to calling conventions and may be used for other purposes in the future.