================
@@ -36,3 +36,8 @@ void* h(unsigned x) {
// expected-error@+1 {{argument value 1048575 is outside the valid range [0,
65535]}}
return __builtin_frame_address(0xFFFFF);
}
+
+void *i() {
+// expected-error@+1 {{too many arguments to function call, expected 0, have
1}}
+return __builtin_stack_address(0);
----------------
AaronBallman wrote:
```suggestion
// expected-error@+1 {{too many arguments to function call, expected 0, have
1}}
return __builtin_stack_address(0);
```
Other test cases I would like to see are:
```
// As a global variable where there is no stack address to get.
// This should be diagnosed as an error?
void *ptr = __builtin_stack_address();
inline void *what() {
return __builtin_stack_address();
}
void func() {
void *ptr = what(); // Is this getting the stack address of? The inline
function or is it getting the stack address of the caller? Or depends on
optimization level?
}
```
Should we also have tests for what happens with naked functions or other kind
of odd situations where the stack may be different from the normal case?
https://github.com/llvm/llvm-project/pull/148281
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits