unchecked_cse.sol 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. // RUN: --target solana --emit cfg
  2. contract foo {
  3. int64 public var;
  4. uint64 public var2;
  5. //BEGIN-CHECK: foo::foo::function::mul__int64_int64
  6. function mul(int64 a, int64 b) public returns (int64) {
  7. unchecked {
  8. // CHECK: ty:int64 storage %temp.14 = (unchecked (arg #0) * (arg #1))
  9. var = a * b;
  10. }
  11. // CHECK: return ((arg #0) * (arg #1))
  12. return a * b;
  13. }
  14. //BEGIN-CHECK: foo::foo::function::add__int64_int64
  15. function add(int64 a, int64 b) public returns (int64) {
  16. unchecked {
  17. // CHECK: ty:int64 storage %temp.15 = (unchecked (arg #0) + (arg #1))
  18. var = a + b;
  19. }
  20. // CHECK: return ((arg #0) + (arg #1))
  21. return a + b;
  22. }
  23. //BEGIN-CHECK: foo::foo::function::sub__int64_int64
  24. function sub(int64 a, int64 b) public returns (int64) {
  25. unchecked {
  26. // CHECK: ty:int64 storage %temp.16 = (unchecked (arg #0) - (arg #1))
  27. var = a - b;
  28. }
  29. // CHECK: return ((arg #0) - (arg #1))
  30. return a - b;
  31. }
  32. //BEGIN-CHECK: foo::foo::function::power__uint64_uint64
  33. function power(uint64 a, uint64 b) public returns (uint64) {
  34. unchecked {
  35. // CHECK: ty:uint64 storage %temp.17 = (unchecked (arg #0) ** (arg #1))
  36. var2 = a ** b;
  37. }
  38. // CHECK: return ((arg #0) ** (arg #1))
  39. return a ** b;
  40. }
  41. }