mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-19 19:45:40 -04:00

This addresses a bug brought up in https://bugs.llvm.org/show_bug.cgi?id=38161 where integer literals could be treated as fixed point types and throw errors related to fixed point types when the 'k' or 'r' suffix used. The fix also addresses the second issue brought up with the assertion by not treating integers as fixed point types in the first place. Integers that have suffixes 'k' and 'r' now throw the error `invalid suffix 'k/r' on integer constant`. A few more tests were also added to ensure that fixed point types, and any errors/warnings related to them, are limited to C for now. Prior discussion also at https://reviews.llvm.org/D46915. Differential Revision: https://reviews.llvm.org/D49327 llvm-svn: 337289
15 lines
861 B
C++
15 lines
861 B
C++
// RUN: %clang_cc1 -x c++ %s -verify
|
|
// RUN: %clang_cc1 -x c++ -ffixed-point %s -verify
|
|
|
|
// Name namgling is not provided for fixed point types in c++
|
|
|
|
_Accum accum; // expected-error{{unknown type name '_Accum'}}
|
|
_Fract fract; // expected-error{{unknown type name '_Fract'}}
|
|
_Sat _Accum sat_accum; // expected-error{{unknown type name '_Sat'}}
|
|
// expected-error@-1{{expected ';' after top level declarator}}
|
|
|
|
int accum_int = 10k; // expected-error{{invalid suffix 'k' on integer constant}}
|
|
int fract_int = 10r; // expected-error{{invalid suffix 'r' on integer constant}}
|
|
float accum_flt = 10.0k; // expected-error{{invalid suffix 'k' on floating constant}}
|
|
float fract_flt = 10.0r; // expected-error{{invalid suffix 'r' on floating constant}}
|